根据多个Spring配置文件定义bean

7

我的应用程序有三个配置文件:dev,test,prod。 我想使用Spring配置文件来自定义bean注入,以便对于dev和test配置文件,我将有一个bean实现,而对于prod配置文件,我将有另一个bean实现。 问题是如何实现。我该如何设置一个bean在两个不同的配置文件中都处于活动状态。 我尝试了以下内容:

@Component
@Profile("dev, test")
class DevTestBean{}

但不幸的是,Spring 将其视为一个名为“dev, test”的单个配置文件。
2个回答

13
您需要更改为@Profile({"dev", "test"})
值必须声明为Set。请参阅文档

如果一个@Configuration类被标记为@Profile,则该类关联的所有@Bean方法和@Import注解都将被绕过,除非其中一个或多个指定的配置文件处于活动状态。这类似于Spring XML中的行为:如果提供了beans元素的profile属性,例如,除非已激活至少profile 'p1'或'p2',否则不会解析beans元素。同样,如果@Component或@Configuration类被标记为@Profile({"p1",“p2”}),则该类只有在至少激活了profile 'p1'或'p2'时才会注册或处理。


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接