java – 如何获取包含占位符的属性的原始值?
作者:互联网
我试图在我的.properties文件中定义以下属性:
personExpression=${person.surname}
然后由config类读取:
@Configuration
public class TemplateConfig {
@Autowired
private Environment environment;
public String getPersonExpression() {
return environment.getProperty("personExpression");
}
}
但是这给出了例外:
java.lang.IllegalArgumentException: Could not resolve placeholder 'person.surname' in string value "${person.surname}"
有没有办法让getPersonExpression()返回字符串文字${person.surname}而不试图解决它?
解决方法:
为了实现这一点,需要一些非常不直观的语法.
您基本上必须将表达式拆分为两部分,并将整个事物包装在父SpEL表达式中以加入它们.
如果您将属性值更改为以下值,则应该可以:
personExpression=#{'$' + '{person.surname}'}
这是有效的,因为你要从{person.surname}拆分$字符,所以SpEL不会尝试将它作为表达式进行评估,因为就它而言,你只是将两个字符串连接在一起.
标签:java,spring,spring-el 来源: https://codeday.me/bug/20190706/1397216.html