我可以控制基於我傳遞給應用程序的參數在我的應用程序上下文的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