【发布时间】:2011-07-06 07:22:28
【问题描述】:
我有一个 Spring bean,它通过其构造函数中的 http 访问外部系统。 如果启动时外部系统不可用,则无法创建 bean,应用程序无法正常启动。
我希望无论外部系统如何,我的应用程序都能启动。我宁愿暂时缺少功能,也不愿重新启动应用程序。
我知道这应该可以在 Spring 中通过正确选择范围和代理 bean 工厂来实现,但我不确定实际上是如何做到的。在我看来,Spring AOP 的大部分内容旨在修改已成功创建且无法在创建期间处理异常的目标,还是我错了?
简而言之:我想要一个代理,它在第一次访问时创建目标 bean,然后只要它工作就保留该实例。如果创建失败,它应该抛出异常并在下次调用代理时重试。
那么,您将如何实现此功能?
【问题讨论】:
-
我不会说 Spring 在这里真的会对你有很大帮助。使用简单的异常处理和状态控制,自己实现弹性可能会更容易。