我想让我的弹簧引导配置类A依赖于另一个配置类B,即只有在计算B配置时才计算A配置。
在实际的上下文中,我有数百个Ai配置,只有一个B,我希望通过在测试期间只排除B来实现一种排除所有Ai配置的方法。
我尝试了以下几点:
@Configuration
@ConditionalOnBean(type = "org.my.B")
public class A1AutoConfiguration {
// ...
}其中B是一个无条件的配置类。
但是当我运行mvn spring-boot:run -Ddebug=true时,我发现A是,而不是计算,因为B是缺失的。虽然在B中创建的bean位于应用程序上下文中,但B本身却不是。
我想我可以让Ai配置类依赖于在B中创建的bean,但是我不太喜欢这个解决方案。
是否有一种更干净(有效)的方法来实现这种依赖机制?
发布于 2016-11-25 14:52:59
关键是要确保事情是正确有序的。如果不能确保首先计算B,那么只在B存在的情况下请求A应用是没有任何意义的。
这几百个部分让我有点害怕。如果As和B是自动配置的,则可以使用以下方法
@AutoconfigureAfter(B.class)
@ConditionalOnBean(B.class)
public class A123AutoConfiguration { ...}如果As和B不是自动配置,则需要确保首先处理B,这样就不能依赖常规的类路径扫描。
发布于 2016-11-25 13:27:24
我想说,这组bean适合于单独的库或子模块,因此它们是独立的。包括机制,可以是组件扫描的根包这样的库或子模块.
其他选项是使用Spring配置文件。用 annotation标记bean并使用 to enable certain group of beans during test。
https://stackoverflow.com/questions/40805258
复制相似问题