【发布时间】:2021-09-13 08:51:31
【问题描述】:
我试图通过使用Environment 从属性文件中检索属性,然后使用SpelExpressionParser 评估表达式,以编程方式模仿@Value 注释。
这是一个代码sn-p:
@Service
@Slf4j
public class Test {
private String dynamicSPELStr = "#{${test.spel.map}.default}";
@Autowired
private Environment environment;
void testSPEL() {
ExpressionParser parser = new SpelExpressionParser();
log.info("[PARSER] {}", parser
.parseExpression(environment.resolvePlaceholders(dynamicSPELStr))
.getValue());
}
}
属性为:test.spel.map={default: '5', key1: '10', key2: '20', key3: '40'}
但是我收到以下错误:
Expression [#{{default: '5', key1: '10', key2: '20', key3: '40'}.default}] @1: EL1043E: Unexpected token. Expected 'identifier' but was 'lcurly({)'
使用@Value 运行相同的表达式就可以了。
【问题讨论】:
标签: java spring spring-boot properties-file spring-expression-language