2013-12-18 24 views
2

我在Spring Web應用程序(我使用Spring註釋)中有一個原型範圍的bean,我們稱它爲MainBean,它通過依賴注入來使用IOtherBean的實現之一。Spring選擇所需的bean實現

我遇到的問題是,我們直到運行時才知道我們需要使用哪個實現。當我們調用MainBean的一個方法(可以說doStuff(String param))時,它應該根據參數值確定要選擇哪個實現。

目前我只是通過將ApplicationContext自動裝配到MainBean中並根據參數值調用appContext.getBean()來實現它,並且工作正常。

我想知道有沒有更乾淨的方法呢?如果那些不是Spring管理的bean,我會使用Factory模式來實例化正確的。春天有類似的東西嗎?從我讀的內容看,我不能看到如何使用Spring工廠bean在運行時執行我想要的操作。

任何意見讚賞。

+0

你可以發表一些代碼示例嗎?你說什麼沒有多大意義。如果您從一個接口(IOtherBean)擁有多個bean,則所有bean將具有相同參數值的相同方法。 當你使用接口類型注入時,直到你在那裏使用一些工廠模式和靜態工廠方法,我才真正看不到選擇。 您是否嘗試使用@Qualifier批註並在注入時使用限定詞名稱? – dharam

回答

2

其實通過使用ApplicationContext.getBean()你已經使用工廠模式,只是春天的一個。 getBean()方法在BeanFactory接口中聲明,ApplicationContext擴展。所以你現在做的對我來說可以。