2016-09-23 3 views
2

spring.profiles.activeapplication.propertiesを他の変数を含む値に設定することはできますか?明らかに、私はこれを動作させることはできません。ここで application.propertiesの変数でspring.profiles.activeを値に設定する

は、私が欲しいものです:

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

、環境変数APP_ONEAPP_TWOが解釈され、spring.profiles.activeで終わるべきです。

applicationContext.xml<beans profile="one">タグでこれを参照できるようにしたいと考えています。

申し訳ありませんが、私はここで十分ではないが、私はより正確にする方法がわかりません。

答えて

1

可能です。ただし、の変数をspring.profiles.activeに定義することはできません。これは、スプリングチェックを行うプロパティーソースの順序と同じ(またはより低い優先順位)です。順序はhereと記載されています。

あなたの場合、同じプロパティーソース内の変数を補間しようとしました。 他のプロパティではこれを行うことができますが、spring.profiles.activeではそうではありません。なぜなら、おそらくスプリングが他のプロファイル固有のプロパティをチェックする必要があるかどうかを判断するためです。

あなたは

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

にごapplication.propertiesを変更して高い財産元の順番(例えば、コマンドライン引数)でAPP_ONE、APP_TWO変数を設定した場合。プロファイルを期待どおりに設定する必要があります。

質問の2番目の部分は分かりませんでしたが、どのプロファイルがアクティブであるかをプログラムで確認したい場合は、単に環境を自動配線して対応するメソッドを呼び出すことができます。

@Autowired 
Environment env; 

環境

String[] getActiveProfiles() 
String[] getDefaultProfiles() //and 
boolean acceptsProfiles(String... profiles) 
のようなメソッドを持ってい
関連する問題