我有一个 Spring bean,它通过构造函数中的 http 访问外部系统。如果启动时外部系统不可用,则无法创建 bean 并且应用程序无法正常启动。
我希望我的应用程序无论外部系统如何都能够启动。我宁愿暂时缺少功能也不愿重新启动应用程序。
我知道这应该可以在 Spring 中通过正确选择范围和代理 bean 工厂来实现,但我不确定实际上是如何做到的。在我看来,Spring AOP 的大部分内容旨在修改成功创建的目标,并且在创建过程中无法处理异常,还是我错了?
简而言之:我想要一个代理,它在第一次访问时创建目标 bean,然后只要它工作就保留该实例。如果创建失败,它应该抛出异常并在下次调用代理时重试。
那么,您将如何实现此功能?
我最终创建了一个 ResilientBeanProxy,将实际创建推迟到以后,所以是的,它几乎与 Spring 的惰性初始化一样,但增加了在初始化期间处理异常的功能。例如,如果启动期间发生错误,它不会停止应用程序上下文的创建。
如果创建失败,将在下次调用时重试。
| 归档时间: |
|
| 查看次数: |
2017 次 |
| 最近记录: |