如何从另一个上下文访问bean

时间:2013-10-03 15:14:27

标签: java spring

我想访问一个已经在单独的上下文中自动装配的Spring 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>

这是对的吗?

1 个答案:

答案 0 :(得分:1)

不,你正在做的是为你声明你的bean的当前上下文做一个监听器。

  

我想访问一个已经单独自动装配的Spring bean   上下文。

如果您需要进行一些自动装配,则需要使用<import>@Import导入其他上下文,具体取决于您的配置类型(java vs xml)。例如

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

如果您只想获得一个bean,您可以随时创建另一个ApplicationContextgetBean()

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

您还可以使用ContextLoaderListenerDispatcherServlet相同的方式合并应用程序上下文。查看源代码以获取更多详细信息。