2016-11-04 10 views
0

VMで環境変数を定義しました。-Denvironment = dev。そして、私はこの変数をSpEl、#{systemProperties ['environment']}を使って得ることができます。私は、プロパティファイルで定義されているdev.anything = someValueというプロパティ変数を持っています。私は$ {dev.anything}を使ってこれにアクセスできます。しかし、$ {#{systemProperties ['environment']}。anything}は期待値someValueの代わりに私にdev.anythingを与えます。

+0

てみてください{+ '.anything' #{systemProperties [ '環境']}} '$' – usha

答えて

0

SpEL内にプロパティプレースホルダを置くことはできますが、その逆もできません。プロパティプレースホルダを使用することもできます。

${${environment}.anything}}は動作します -

@Value("${${bar}.foo}") 
String foo;` 

yを含むfooというにおける結果

-Dbar=x -Dx.foo=yで。

これはあまりにも....

@Value("#{systemProperties['${bar}' + '.foo']}") 
String bar; 
+0

おかげゲイリーに動作します。あなたのソリューションはうまくいくと思います。しかし、デザインを変更したばかりです。たとえば、プロパティを別のファイル、dev.properties、it.properties、prod.propertiesなどに分割します。したがって、PropertyPlaceHolderConfigurerは classpath:/proprty/ $ {environment:dev} .propertiesに変更されます。 –

+0

はい、それも動作します。 –

関連する問題