首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使配置以另一个配置为条件?

如何使配置以另一个配置为条件?
EN

Stack Overflow用户
提问于 2016-11-25 12:36:36
回答 2查看 11K关注 0票数 7

我想让我的弹簧引导配置类A依赖于另一个配置类B,即只有在计算B配置时才计算A配置。

在实际的上下文中,我有数百个Ai配置,只有一个B,我希望通过在测试期间只排除B来实现一种排除所有Ai配置的方法。

我尝试了以下几点:

代码语言:javascript
复制
@Configuration
@ConditionalOnBean(type = "org.my.B")
public class A1AutoConfiguration {
// ...
}

其中B是一个无条件的配置类。

但是当我运行mvn spring-boot:run -Ddebug=true时,我发现A,而不是计算,因为B是缺失的。虽然在B中创建的bean位于应用程序上下文中,但B本身却不是。

我想我可以让Ai配置类依赖于在B中创建的bean,但是我不太喜欢这个解决方案。

是否有一种更干净(有效)的方法来实现这种依赖机制?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-25 14:52:59

关键是要确保事情是正确有序的。如果不能确保首先计算B,那么只在B存在的情况下请求A应用是没有任何意义的。

这几百个部分让我有点害怕。如果As和B是自动配置的,则可以使用以下方法

代码语言:javascript
复制
@AutoconfigureAfter(B.class)
@ConditionalOnBean(B.class)
public class A123AutoConfiguration { ...}

如果As和B不是自动配置,则需要确保首先处理B,这样就不能依赖常规的类路径扫描。

票数 7
EN

Stack Overflow用户

发布于 2016-11-25 13:27:24

我想说,这组bean适合于单独的库或子模块,因此它们是独立的。包括机制,可以是组件扫描的根包这样的库或子模块.

其他选项是使用Spring配置文件。用 annotation标记bean并使用 to enable certain group of beans during test

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40805258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档