如何在 Spring 表达式语言中 运行 嵌套求值

How to run nested evaluations in Spring Expression Language

我想使用 SPeL,我需要评估配置源中的参数。问题是 name/key 是动态的。所以我依靠一个参数来解决另一个。 我基本上需要检查一个布尔参数。

示例: 部分 key/prefix:app.name 全密钥:${app.name}.feature.isEnabled

所以,在 SPeL 中,我尝试了类似的东西:

#{'${app.name}.feature.isEnabled' != null && !'${app.name}.feature.isEnabled'}

但这编译但不起作用。

如果app.name=my-app,以上解析为字符串文字: 我的应用程序。feature.isEnabled

文字本身 id 没问题,但我实际上需要这个键的值。

如果我尝试用另一个表达式换行,它不会编译:

#{${'${app.name}.feature.isEnabled'} != null && !${'${app.name}.feature.isEnabled'}}

我尝试了上述的不同变体,但无法使用正确的公式。

这可能吗?

可能有一些更简单的方法,但这有效...

"#{'${${app.name}.feature.isEnabled}' != null ? '${${app.name}.feature.isEnabled}'.toLowerCase().equals('true') : 'false'}"

但是如果未设置 属性,则需要 属性 占位符配置器上的 ignore-unresolvable="true"