我可以控制基于我传递给应用程序的参数在我的应用程序上下文的Spring bean是否被实例化多春@Profiles管辖?排除豆通过在同一时间
实施例:
如果我在
设置弹簧型材ANT的build.xml jvmarg为: -Dspring.profiles.active=P1,P2
对于在配置类下面的代码片断:
@Bean
@Profile({"!P1", "!P2"})
public String P3() {
String s = "Check1:P3";
System.out.println(s);
return s;
}
@Bean
@Profile({"!P1", "!P3"})
public String P2() {
String s = "Check2:P2";
System.out.println(s);
return s;
}
@Bean
@Profile({"!P2", "!P3"})
public String P1() {
String s = "Check3:P1";
System.out.println(s);
return s;
}
@Bean
@Profile("P3")
public String P3_1() {
String s = "Check4:P3";
System.out.println(s);
return s;
}
@Bean
@Profile("P1")
public String P1_1() {
String s = "Check5:P1";
System.out.println(s);
return s;
}
@Bean
@Profile("P2")
public String P2_1() {
String s = "Check6:P2";
System.out.println(s);
return s;
}
我得到的输出:
Check2:P2
Check3:P1
Check5:P1
Check6:P2
这是正确的。
但是,当我设置的配置文件中的build.xml为:
-Dspring.profiles.active=P1
Output:
Check1:P3
Check2:P2
Check3:P1
Check5:P1
但按我的期望,我希望能得到像输出:
Check3:P1
Check5:P1
(IE)只P1 ()bean在运行时启动。
任何人都可以给我建议,如果这是可能的@Profiles? 我可以根据配置文件的排除规则来控制运行时启动的bean吗? 或者我该如何做到这一点?
的基本要求是,如果有“N”豆。根据我传递给环境/服务器目标的参数,我可以控制1个bean在运行时启动。
我试图利用其可以通过不同的环境中使用的共享码(其中,所有的bean被定义)(要求每个bean来开特定环境)?
另请参见Spring Boot中的@ ConditionalOnProperty注解。 – jhyot