gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:41 26 4
gpt4 key购买 nike

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

这是正确的吗?

最佳答案

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

I want to access a Spring bean which has been autowired in a separate context.

如果你需要做一些 Autowiring ,你需要用 <import> 导入其他上下文或 @Import取决于您的配置类型(java 与 xml)。例如

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

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

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

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

关于java - 如何从另一个上下文访问 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19162843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com