我的应用中有3个配置文件名为:dev,test,prod。 我想使用spring配置文件来自定义bean注入,这样对于profile dev和test我将有一个bean实现,而对于profile prod,我将有另一个。 问题是如何实现这一目标。如何设置一个bean在两个不同的配置文件中处于活动状态。 我试过这样的事情:
@Component
@Profile("dev, test")
class DevTestBean{}
但不幸的是,春天将其视为一个名为dev comma space test的单个配置文件。
答案 0 :(得分:7)
您必须更改为@Profile({"dev", "test"})
该值必须声明为Set。 请参阅documentation
如果@Configuration类用@Profile标记,则所有@Bean 方法和与该类关联的@Import注释将是 绕过,除非一个或多个指定的配置文件处于活动状态。这个 类似于Spring XML中的行为:如果是profile属性 例如,提供豆元素的例子 除非至少有个人资料' p1'否则将不会解析bean元素。或者' p2' 已被激活。同样,如果是@Component或@Configuration类 标有@Profile({" p1"," p2"}),该类不会 注册或处理,除非至少有个人资料' p1'或者' p2'一直都是 激活。
答案 1 :(得分:0)
XML解决方案尚未放在官方文档中
为便于记录,我将其放在此处:
<beans profile="dev,foo,bar">
<!-- (...) -->
</beans>