获得Spring应用上下文

有没有办法在Spring应用程序中静态/全局地请求一个ApplicationContext的副本?

假设主类启动并初始化应用程序上下文,它是否需要通过调用堆栈向下传递给需要它的任何类,或者是否有方法让类请求先前创建的上下文? (我认为必须是单身?)


如果需要访问容器的对象是容器中的bean,只需实现BeanFactoryAware或ApplicationContextAware接口。

如果容器外部的对象需要访问容器,我已经使用了标准的GoF单例模式作为spring容器。 这样,你的应用程序中只有一个单例,其余的都是容器中的单例bean。


你可以实现ApplicationContextAware或者只使用@Autowired

public class SpringBean {
  @Autowired
  private ApplicationContext appContext;
}

SpringBean将注入ApplicationContext ,在这个bean中实例化这个bean。 例如,如果您的Web应用程序具有相当标准的上下文层次结构:

main application context <- (child) MVC context

并且SpringBean在主要上下文中被声明,它将注入主要上下文; 否则,如果它在MVC上下文中声明,它将注入MVC​​上下文。


这是一个很好的方式(不是我的,原始参考在这里:http://sujitpal.blogspot.com/2007/03/accessing-spring-beans-from-legacy-code.html

我已经使用这种方法,它工作正常。 基本上它是一个简单的bean,它拥有对应用程序上下文的(静态)引用。 通过在spring配置中引用它进行初始化。

看看原始文献,这很清楚。

链接地址: http://www.djcxy.com/p/50895.html

上一篇: Getting Spring Application Context

下一篇: How to stop a scheduled task that was started using @Scheduled annotation?