在application.properties中使用SpEL根据另一个属性填充属性

时间:2018-04-08 23:33:30

标签: spring properties-file spring-el

以下是application.properties文件:

myVar=${SOME_VAR:#{null}}
result=myVar is #{myVar != null && myVar.length() > 0 ? '' : 'not'} populated

我想要的是,如果设置了环境变量SOME_VAR(而不是空白),则属性result应为myVar is populated,否则为myVar is not populated。<登记/> 我上面提到的代码不起作用(设置result的行),我也尝试了#{}和$ {}的不同组合,包括包裹myVar,但没有成功至今。

正确的做法是什么?感谢。

2 个答案:

答案 0 :(得分:1)

如果您的成员变量是私有的,您将无法直接引用myVar字段。所以你应该把你的条件直接放在属性值上。

请根据您的要求检查以下表达方式。

@Value("myVar is #{ '${SOME_VAR}' != null && '${SOME_VAR}'.trim().length() > 0 ? '' : 'not'} populated")
private String result;

#{}是一种表达式语言功能,而$ {}是一种简单的属性占位符语法。

答案 1 :(得分:0)

我最终做了

0x0000023c4f9fb2b0 "DHM - The ASN.1 data is not formatted correctly : ASN1 - ASN1 tag was of an unexpected value"