2013-10-03 68 views
2

我想訪問一個已經在單獨的上下文中自動裝配的Spring bean。如何從另一個上下文訪問bean

這可能嗎?

我想我可以使用使用這樣的事情它的ApplicationContext和電線:

import org.springframework.beans.BeansException; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.ApplicationContextAware; 

public class ApplicationContextProvider implements ApplicationContextAware { 
    private static ApplicationContext ctx = null; 
    public static ApplicationContext getApplicationContext() { 
     return ctx; 
    } 
    public void setApplicationContext(ApplicationContext ctx) throws BeansException { 
     this.ctx = ctx; 
    } 
} 


<bean id="applicationContextProvider" class="ApplicationContextProvider"></bean> 

這是正確的嗎?

回答

0

不,你在做什麼正在爲當前上下文監聽聲明在bean。

我要訪問一個Spring bean已經在單獨 背景下自動裝配。

如果你需要做一些自動連接,你需要有具體取決於您的配置類型(Java的XML VS)<import>@Import導入其他方面。例如

<import resource="classpath:/path/to/otherAppContext.xml" /> 

如果你只想得到一個bean,你總是可以創建其他ApplicationContextgetBean()

ApplicationContext otherContext = ...// get other context 
BeanClass otherBean = otherContext.getBean(BeanClass.class); 

您也可以以同樣的方式合併應用程序上下文作爲ContextLoaderListener確實與DispatcherServlet。查看源代碼以獲取更多詳細信息。

相關問題