2014-01-30 39 views
2

我試圖創建一個Spring上下文配置的別名是這樣的:我可以在「別名」定義中使用Spring表達式語言嗎?

<alias name="#{ ... code to lookup from config file ...}" alias="BeanName"/> 

,但它似乎並沒有在「名稱」屬性來執行EL。這是不允許的?

+0

你能分享EL表達嗎? –

+0

請參閱Sotrios的答案,但我甚至嘗試了一個非常簡單的表達式,如#{'BeanName'},但它未被轉換。 – Dave

回答

3

這不是不允許的,而是別名BeanExpressionResolver。您可以使用屬性佔位符${},但這是處理它的完全不同的組件。

+0

謝謝,有沒有辦法註冊一個? – Dave

+0

@Dave它會很奇怪。別名的生命週期與bean的生命週期不同。你可以使用一個'BeanFactoryPostProcessor'來使用一些解析器來完成它,但是在創建bean的時候,它必須被懶惰地完成。你能解釋爲什麼你需要這個嗎?可能有更好的方法。 –

+0

我正在改變一些bean的實現。我希望能夠切換回配置文件更改爲舊版本,以防發現一些問題。所以我想定義bean的兩個版本:beanOld和beanNew,然後有一個別名,它根據配置將「bean」指向beanOld或beanNew。更復雜的是,我們有一個配置系統,它不基於屬性文件,並需要調用靜態方法來獲取值。 – Dave

相關問題