微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – @ContextConfiguration中配置类的初始化顺序是否会受到影响?

我正在使用@ContextConfiguration批注来管理我的应用程序中的配置.创建配置,以便它们仅提供由给定模块公开的bean.因此,给定模块使用的某些bean不一定是直接导入的.例:

configuration --(use)--> module1 --(cannot @Import)--> database
              \-(use)--------------------------------> database

简而言之,配置使用module1,它需要(但不能直接导入)数据库配置.因此,配置也使用数据库模块.

但似乎解决进口的顺序是相当随机的.即使我使用

@ContextConfiguration(classes={DatabaseConfig.class,Module1Config.class})

这导致初始化的不确定性失败(NoSuchBeanDeFinitionException).

有没有办法影响bean的初始化顺序?或者我应该创建@Import沿依赖项的配置的配置叠加?但在这种情况下,同样的问题适用于@Import,因为它必须确保加载依赖项的顺序.

最佳答案
这个问题似乎源于同时可用的不同版本的弹簧.当代码保持运行时,org.springframework.context.annotation.ConfigurationClassparser.collectImports(AnnotationMetadata,Set< Object>,Set< Object>)方法只加载了一小部分@Imports.在解析期间执行被断点暂停时,一切都运行正常.

一旦清理了多个版本的弹簧库,问题就消失了. (至少在十几次运行后它没有出现.)

原文地址:https://www.jb51.cc/spring/432192.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐