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的事务传播属性REQUIRED_NESTED的原...
今天小编给大家分享的是一文解析spring中事务的传播机制,相...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓...