gpt4 book ai didi

java - @ContextConfiguration 中配置类的初始化顺序会受到影响吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:32:57 31 4
gpt4 key购买 nike

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

configuration --(use)--> module1 --(cannot @Import)--> database
\-(use)--------------------------------> database

换句话说,配置使用module1,它需要(但不能直接导入)数据库配置。因此,配置也使用了数据库模块。

但是导入的解析顺序似乎是随机的。即使我用

@ContextConfiguration(classes={DatabaseConfig.class, Module1Config.class})

这会导致不确定的初始化失败(NoSuchBeanDefinitionException)。

有什么方法可以影响 bean 的初始化顺序吗?或者我应该创建一个配置覆盖层,@Import 配置沿依赖关系?但在那种情况下,同样的问题适用于 @Import,因为它必须确保加载依赖项的顺序。

最佳答案

这个问题似乎是因为不同版本的spring同时可用。当代码继续运行时,只有一小部分 @Importsorg.springframework.context.annotation.ConfigurationClassParser.collectImports(‌​AnnotationMetadata, Set<Object>, Set<Object>) 加载方法。当执行在解析过程中被断点暂停时,一切正常。

一旦多个版本的 spring 库被清理,问题就消失了。 (至少跑了十几次就没有再出现过。)

关于java - @ContextConfiguration 中配置类的初始化顺序会受到影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19380493/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com