Spring fallback bean实现
我目前正在尝试为以下场景配置Spring Boot(使用Java Annotations和ComponentScan): 脚本 >有一个接口MyService. 题 问题是:为了实现这一目标,我如何需要注释MyDefaultService类? 到目前为止我试图解决这个问题 >使用@ConditionalOnMissingBean(MyService.class)注释MyDefaultService.没有用,因为从未使用过MyDefaultService,即使没有MyService的其他实现. 具体用例 我正在一个项目中开发一个服务层,另一个项目将在它上面实现一个Web UI层. UI项目依赖于服务层项目.但是,对于在服务层实现的某些功能,我需要知道哪个用户当前在Web上下文中登录.所以我必须在服务层项目中为它定义一个服务接口,这样它就可以由UI项目实现.但是,为了在服务层项目中进行测试,我需要该接口的默认实现.此外,如果UI项目团队忘记实现此接口,则应用程序不应该崩溃,而是实例化回退bean并发出警??告. 谢谢&亲切的问候, 艾伦 最佳答案
我建议写一个
FactoryBean 的实现来做到这一点.您的FactoryBean将扫描bean工厂,查找实现MyService的bean,如果找到,则从getObject返回该bean.如果没有,那么它可以直接实例化MyDefaultService并返回它.然后,您的工厂bean将使用@Primary进行注释.
像这样的碎片(伪代码):
然后
Spring将自动处理工厂bean(即它将使MyService对象可用作正常注入的bean. 这个解决方案不需要任何特殊的魔法,它的工作原理相当明显.您还可以处理错误的情况,例如声明的多个MyService bean. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |