我試圖創建一個Spring上下文配置的別名是這樣的:我可以在「別名」定義中使用Spring表達式語言嗎?
<alias name="#{ ... code to lookup from config file ...}" alias="BeanName"/>
,但它似乎並沒有在「名稱」屬性來執行EL。這是不允許的?
我試圖創建一個Spring上下文配置的別名是這樣的:我可以在「別名」定義中使用Spring表達式語言嗎?
<alias name="#{ ... code to lookup from config file ...}" alias="BeanName"/>
,但它似乎並沒有在「名稱」屬性來執行EL。這是不允許的?
這不是不允許的,而是別名BeanExpressionResolver
。您可以使用屬性佔位符${}
,但這是處理它的完全不同的組件。
謝謝,有沒有辦法註冊一個? – Dave
@Dave它會很奇怪。別名的生命週期與bean的生命週期不同。你可以使用一個'BeanFactoryPostProcessor'來使用一些解析器來完成它,但是在創建bean的時候,它必須被懶惰地完成。你能解釋爲什麼你需要這個嗎?可能有更好的方法。 –
我正在改變一些bean的實現。我希望能夠切換回配置文件更改爲舊版本,以防發現一些問題。所以我想定義bean的兩個版本:beanOld和beanNew,然後有一個別名,它根據配置將「bean」指向beanOld或beanNew。更復雜的是,我們有一個配置系統,它不基於屬性文件,並需要調用靜態方法來獲取值。 – Dave
你能分享EL表達嗎? –
請參閱Sotrios的答案,但我甚至嘗試了一個非常簡單的表達式,如#{'BeanName'},但它未被轉換。 – Dave