我想访问一个已经在单独的上下文中自动装配的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>
这是对的吗?
答案 0 :(得分:1)
不,你正在做的是为你声明你的bean的当前上下文做一个监听器。
我想访问一个已经单独自动装配的Spring bean 上下文。
如果您需要进行一些自动装配,则需要使用<import>
或@Import
导入其他上下文,具体取决于您的配置类型(java vs xml)。例如
<import resource="classpath:/path/to/otherAppContext.xml" />
如果您只想获得一个bean,您可以随时创建另一个ApplicationContext
和getBean()
。
ApplicationContext otherContext = ...// get other context
BeanClass otherBean = otherContext.getBean(BeanClass.class);
您还可以使用ContextLoaderListener
与DispatcherServlet
相同的方式合并应用程序上下文。查看源代码以获取更多详细信息。