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

all*_*rog 6 java spring

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

configuration --(use)--> module1 --(cannot @Import)--> database
              \-(use)--------------------------------> database
Run Code Online (Sandbox Code Playgroud)

总之,需要(但不能直接导入)数据库配置的configuration用途.因此,也使用该模块.module1configurationdatabase

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

@ContextConfiguration(classes={DatabaseConfig.class, Module1Config.class})
Run Code Online (Sandbox Code Playgroud)

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

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

all*_*rog 1

这个问题似乎源于不同版本的 spring 同时可用。当代码继续运行时,@Imports该方法只加载了其中的一小部分org.springframework.context.annotation.ConfigurationClassParser.collectImports(\xe2\x80\x8c\xe2\x80\x8bAnnotationMetadata, Set<Object>, Set<Object>)。当解析期间执行被断点暂停时,一切都工作得很好。

\n\n

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

\n