1

そのため、アプリが実行されている環境を反映することになっている環境プロパティがあります。

@Value("${environment}")
private String environmentName; //This will be set as sandbox, staging, production

また、アプリがデプロイされている環境に基づいて設定する必要がある機能フラグ(機能は「superFeature.enable」と呼ばれます)があります。

//Config file
superFeature.enable.sandbox=true
superFeature.enable.staging=false
superFeature.enable.production=false


//@Service annotated class containing call to configuration

@Value("${superFeature.enable.{environment}:false}")
private boolean isSuperFeatureEnabled;

現時点では、サンドボックス環境でアプリを実行すると、isSuperFeatureEnabled常にfalseになります。上記のコードスニペットの構文は正しいですか?足りないものはありますか?

4

2 に答える 2

0

入れるべきではなかったのか

@Value("${superFeature.enable.{environmentName}:false}")

そこの?これは単なる推測です。恐れ入りますが。そこに矛盾が見えた。しかし、上記の 2 つのステートメントが実行されるコンテキストと順序がわからないため、どの変数がどこにあるのかわかりません。最初にもう少し情報を入手することをお勧めします。同様に、 {environment} を環境の予想される文字列に置き換えるとどうなるか、その時点でコード内の環境値を取得できますか. この種の二重の間接化が可能かどうかはわかりません。

于 2013-01-16T07:53:58.483 に答える
0

次のようにする必要があります (環境も $ で始まるプレースホルダー構文で囲まれています) :

@Value("${superFeature.enable.${environment}:false}")
于 2013-01-16T10:37:12.907 に答える