在 SpEL 中读取配置属性

Reading configuration properties in SpEL

我的 application.yml 或开发工具中有一个 com.mycompany.condition 属性。目前我正在使用

将其注入某些服务
@Value("${com.mycompany.condition: false}") 
boolean condition;

然后用作 @Cacheable(condition = "#root.target.isCondition()") 的条件。是否可以不注入值,而是直接使用 SpEL 读取 属性?使用 @Cacheable(condition = "${com.mycompany.condition}") 给出错误

2022-03-03 15:17:11.681  WARN [...] 3044 --- [...] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.expression.spel.SpelParseException: EL1041E: After parsing a valid expression, there is still more data in the expression: 'lcurly({)']

同时使用 @Cacheable(condition = "#{${com.mycompany.condition}}") 得到

2022-03-03 15:24:13.194  WARN [...] 19196 --- [...] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.expression.spel.SpelParseException: Expression [#{${com.mycompany.condition}}] @1: EL1043E: Unexpected token. Expected 'identifier' but was 'lcurly({)']

试试这个:

@Cacheable(condition = "@environment.getProperty('com.mycompany.condition')")