首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring多@配置组件扫描歧义

Spring多@配置组件扫描歧义
EN

Stack Overflow用户
提问于 2016-04-28 11:12:09
回答 1查看 450关注 0票数 0

我注意到在处理多个@Configuration文件时,组件扫描和bean创建的模糊性。

假设我有方法级安全性的配置,它需要扫描包含需要被AOP代理的类的包。这些类依赖于其他类,也是其他类的依赖项。

一切正常工作,直到我扫描相同的包,在不同的配置,如在根配置。然后,循环依赖和创建中的bean之类的异常开始出现。看起来根配置也试图实例化相同的对象,但是当然不能这样做,因为在某些时候AOP代理不能应用到这个配置路径中,并且依赖关系也不能满足。

如果我最终准确地扫描了什么,那么一切都能正常工作,但我很惊讶Spring不能自动编排bean创建顺序。是真的是这样还是有什么可疑的事情发生了?

EN

回答 1

Stack Overflow用户

发布于 2016-04-28 12:00:17

这一点都不可疑。beans存储在AppContext中。spring的设计是这样的:您可以在相同的上下文中拥有同一个类的两个实例!如果您通过配置配置MyService两次,那么应该自动配置哪个实例?参见此示例:

代码语言:javascript
复制
@Autowired
private final MyService myService = null;

因为您的扫描工作了两次,您有两种可能的注入选择,spring不能自动释放并给出一个异常(在本例中,spring查找一个@Primary-Annotation,但是因为您扫描了两次,所以在这种情况下它可能没有帮助)。

让客户端选择如下正确的服务是可行的:

代码语言:javascript
复制
@Autowired
private final MyService[] myServices = null;

这是可行的,数组中有所有的实例。

另一个选项是在同一个应用程序中有两个不同的AppContexts。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36912933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档