2016-09-23 115 views
2

是否有可能將spring.profiles.activeapplication.properties設置爲包含其他變量的值?顯然,我無法得到這個工作。將spring.profiles.active設置爲application.properties中變量的值

這裏是我想要的東西:

one=${APP_ONE:foo} 
two=${APP_TWO:bar} 
spring.profiles.active=${one},${two} 

這裏,也是環境變量APP_ONEAPP_TWO應加以解釋和spring.profiles.active結束。

然後,我希望能夠在標記中參考applicationContext.xml

對不起,如果我在這裏不夠清楚,但我不知道如何更精確。

回答

1

這是可能的。但是,您不能在彈簧檢查的屬性源順序的相同(或較低優先級)中定義變量spring.profiles.active。訂單提到here

就你而言,你已經嘗試在相同的屬性源內「插入」變量。 您可以爲其他屬性執行此操作,但不適用於spring.profiles.active,因爲它可能首先被選中以使Spring能夠決定需要檢查其他配置文件特定屬性。

如果您改變application.properties到

spring.profiles.active=${APP_ONE:foo},${APP_TWO:bar} 

,然後設置APP_ONE,具有更高的性能源順序(例如命令行參數)APP_TWO變量。它應該按預期設置配置文件。

我不明白你的問題的第二部分,但如果你想知道哪些配置文件是活動的,編程方式,你可以簡單地自動裝配環境並調用相應的方法。

@Autowired 
Environment env; 

環境有一個像

String[] getActiveProfiles() 
String[] getDefaultProfiles() //and 
boolean acceptsProfiles(String... profiles) 
方法