我正在使用@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.在解析期间执行被断点暂停时,一切都运行正常.
@H_502_33@ 原文链接:https://www.f2er.com/spring/432192.html一旦清理了多个版本的弹簧库,问题就消失了. (至少在十几次运行后它没有出现.)