我想让我的spring-boot配置类A依赖于另一个配置类B,即A仅在B评估配置时才评估配置。
A
B
在实际情况下,我有数百种Ai配置,只有一种B,并且我想Ai通过仅B在测试期间排除的方式来实现一种排除所有配置的方式。
Ai
我尝试了以下方法:
@Configuration @ConditionalOnBean(type = "org.my.B") public class A1AutoConfiguration { // ... }
哪里B是 无条件的 配置类。
但是,当我跑mvn spring-boot:run -Ddebug=true我看到,A是 永远不会计算 ,因为B缺少。虽然在内部创建的Bean B在应用程序上下文中,但B本身不在。
mvn spring-boot:run -Ddebug=true
虽然我可以使Ai配置类依赖于 内部创建的bean, B但是我不太喜欢这种解决方案。
有没有更清洁(且可行)的方式来实现这种依赖机制?
关键是要确保正确订购商品。如果您不能确保首先评估B,则要求A仅在存在B的情况下才适用。
数百部分使我有些害怕。如果As和B是自动配置,则可以使用以下命令
@AutoconfigureAfter(B.class) @ConditionalOnBean(B.class) public class A123AutoConfiguration { ...}
如果As和B不是自动配置,则需要确保先处理B,以便您不能依赖于常规的类路径扫描。