好吧,這裏是我的使用案例:雞和雞蛋春季豆綁定
我有以下類每個封裝在下一個行的實例。所以:
A - >乙 - 「ç - > d
例如:類A,I具有B類的一個實例,並在類B I對C等等的實例。我試圖將加載\初始化\注入邏輯轉換爲混合彈簧系統。一般的想法是B,C和D需要或多或少地是ApplicationContextAware
。我的意思是,他們不會實際實現該接口,而是需要ApplicationContext
作爲構造參數。這樣,在混合方法中(開發人員不使用Spring初始化實例),它們必須至少通過ApplicationContext
,以便可以連接其他bean。問題是,爲了讓Spring容器加載bean,我現在必須在XML中傳入ApplicationContext
。但據我所知,沒有好辦法做到這一點。
我想是這樣的:
public class ApplicationContextPlaceholder implements ApplicationContextAware {
private ApplicationContext _applicationContext;
public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
_applicationContext = applicationContext;
}
public ApplicationContext getApplicationContext() {
return _applicationContext;
}
}
<bean id="a" class="com.company.A">
<constructor-arg>
<bean id="applicationContext" class="com.company.ApplicationContextPlaceholder" />
</constructor-arg>
</bean>
但顯然這並沒有任何意義,因爲ApplicationContextPlaceholder
是不是真的一個ApplicationContext
。我也在尋找方法來引用XML中的上下文,但我沒有找到任何東西。
有沒有人知道這種問題的優雅解決方案?
編輯#1:
我在想這件事,我可以有ApplicationContextPlaceholder
還實現了ApplicationContext
,只是委託注入的情況下,然後將它發生在我身上,也許,只是也許這已經在春天......但據我所知,不。
EDIT#2:
每個類需要一個ApplicationContext
的原因是,如果一個開發希望覆蓋類之一在鏈中(比如說,C爲參數的緣故)。在這種情況下,C的子類仍然需要通過Spring加載D.
您是否絕對需要在您的構造函數中使用'ApplicationContext'?如果你不這樣做,你應該可以自動裝載它。 –
是的,每個實例都需要'ApplicationContext'。 – javamonkey79
如果你可以解釋在連續擁有這麼多重量級類(即基本上是ApplicationContextAware)背後的意圖 –