2016-11-04 42 views
0

我已经在VM中定义了一个环境变量,-Denvironment = dev。我可以通过使用SpEl,#{systemProperties ['environment']}来获得这个变量。同时我有一个属性变量,dev.anything = someValue,在属性文件中定义。我可以通过使用$ {dev.anything}来访问它。但是,$ {#{systemProperties ['environment']}。anything}只是给了我dev.anything,而不是期望值someValue。

+0

尝试'$ {#{systemProperties [ '环境']} + '.anything'}' – usha

回答

0

您可以将属性占位符放入SpEL中,反之亦然,或者只是使用属性占位符。

${${environment}.anything}}将工作 -

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

-Dbar=x -Dx.foo=y

导致富含y

这工作太....

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

感谢加里。我认为你的解决方案有效。但是,我只是改变了我的设计,例如将属性分割为不同的文件,dev.properties,it.properties,prod.properties等等。因此,PropertyPlaceHolderConfigurer更改为 classpath:/ proprty/$ {environment:dev} .properties。 –

+0

是的,这也会起作用。 –