3

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

它是否正确 ?

4

1 回答 1

1

不,您正在做的是为您声明 bean 的当前上下文创建一个侦听器。

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

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

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

如果你只是想得到一个 bean,你总是可以创建另一个ApplicationContextand getBean()

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

您还可以ContextLoaderListener以与DispatcherServlet. 查看源代码以获取更多详细信息。

于 2013-10-03T15:16:45.673 回答