如何在Spring中实现弹性bean?

我有一个
Spring bean,它在构造函数中通过http访问外部系统.

如果外部系统在启动时不可用,则无法创建bean并且应用程序无法正常启动.

我希望我的应用程序能够启动,无论外部系统如何.我宁愿缺少功能一段时间而不是重新启动应用程序.

我知道这应该可以在Spring中实现,并且正确选择范围和代理bean工厂,但我不确定它是如何实际执行的.在我看来,Spring AOP的大多数部分旨在修改成功创建的目标,并且无法在创建过程中处理激活或我错了吗?

简而言之:我想要一个在第一次访问时创建目标bean的代理,然后只要它工作就保留该实例.如果它无法创建它,它应抛出异常并在下次调用代理时重试.

那么,您将如何实现此功能?

最佳答案 你尝试过懒豆启动吗?

<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true"/>

你不应该把这个bean设置为Singleton bean的属性,因为它会在启动时启动它.

点赞