2016-06-08 59 views
1

我想使用SPeL,我需要從配置源中評估參數。問題是名稱/密鑰是動態的。所以我依靠一個參數來解決另一個問題。 我基本上需要檢查布爾參數。如何在Spring表達式語言中運行嵌套評估

例子: 部分鍵/前綴:app.name 全鍵:$ {} app.name .feature.isEnabled

所以,在SPEL我嘗試類似:

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

但這編譯但不起作用。

如果app.name =我的應用程序內,上述解析爲字符串字面量: 我-app.feature.isEnabled

字面本身ID OK,但我確實需要這把鑰匙的價值。

如果我嘗試與另一種表達來包裝,它不編譯:

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

我試圖以上的不同的變化,但它不能使向右式。

這可能嗎?

+0

[如何評估動態/嵌套的Spring屬性佔位符表達式?](http://stackoverflow.com/questions/20705322/how-to-evaluate-a-dynamic-nested-spring-property-placeholder -expression) –

回答

2

有可能是簡單的東西,但這個工程......

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

但你需要的屬性佔位符配置者ignore-unresolvable="true"如果沒有設置該屬性。

+0

這不起作用,因爲PropertyPlaceholderHelper無法解析和識別內部嵌套屬性並解析返回endIndex -1(未找到) – YaOg

+0

它對我來說工作得很好。我在發佈前測試過它。你必須有一個錯字或什麼的。 –

+0

我正在使用彈簧引導並嘗試使用它: @ConditionalOnExpression(「#{'$ {$ {spring.application.name} .http.pingtFilter.isEnabled'!= null &&'$ {$ {spring。 ()') – YaOg

相關問題