【发布时间】:2017-08-01 09:42:49
【问题描述】:
我有一个实例变量,其值应通过查找动态属性名称来设置。
Class Test {
@Value("#{T(java.lang.String).format('filter.%s.disable', getClass().getSimpleName())}")
private boolean disable;
}
disable 应在 filter.Test.disable = true 时计算为 true,否则为 false。如果未定义属性,我还想设置默认值false,这通常使用以下语法完成,但在这种情况下我不确定。
@Value("${property:default}")
我收到了错误:
原因:java.lang.IllegalArgumentException:无效的布尔值 [filter.BeanExpressionContext.disable]
还尝试了@Value("${'dcs.cloud.filter.'#{getClass().getSimpleName()}'.disable'}") 以及# 和$ 的其他一些组合,但均无济于事。
SPEL doc 显示无用的 parser.parseExpression 调用来评估表达式,它使用不同的语法,实际上没有人这样做。看起来他们是从单元测试中挑选代码而不是真实示例。
【问题讨论】: