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

前端之家收集整理的这篇文章主要介绍了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.在解析期间执行被断点暂停时,一切都运行正常.

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

猜你在找的Spring相关文章