我正在使用@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必须确保加载依赖关系的顺序.
这个问题似乎源于不同版本的 spring 同时可用。当代码继续运行时,@Imports该方法只加载了其中的一小部分org.springframework.context.annotation.ConfigurationClassParser.collectImports(\xe2\x80\x8c\xe2\x80\x8bAnnotationMetadata, Set<Object>, Set<Object>)。当解析期间执行被断点暂停时,一切都工作得很好。
一旦清理了多个版本的 spring 库,问题就消失了。(至少运行十几次之后它没有再出现。)
\n| 归档时间: |
|
| 查看次数: |
926 次 |
| 最近记录: |