如何从contextloaderlistener加载的应用程序上下文中获取bean?

时间:2014-06-11 18:04:16

标签: spring spring-mvc

我是Spring / Spring Mvc的新手,这是我的问题。在我的webapp中,除了spring-servlet.xml之外,我还有一个jdbc.xml,用于定义bean,如datasource,dao ...在使用contextloaderlistener之前,我将我的jdbc.xml加载到Controller的构造函数中,就像这个ApplicationContext上下文一样=新的ClassPathXmlApplicationContext(" jdbcbeans.xml")然后从中获取bean。但由于我使用contextloaderlistener加载文件,我如何获得对上下文的引用?我能够使用@Autowired的东西设置所有东西,但我只是想知道有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以使用WebApplicationContextUtils

ApplicationContext context;
context = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);

有关详细信息,请参阅here

答案 1 :(得分:1)

您可以执行以下操作来获取Application Context的实例 在容器管理bean的情况下使用ApplicationContextAware接口

    public class MyBean implements ApplicationContextAware {
       private static ApplicationContext context;     

     public void setApplicationContext(ApplicationContext acontext) throws BeansException {
       context = context;
     }

     public static ApplicationContext getApplicationContext() {
       return context;
     }
   }

或者你可以写下面的

@Autowired
private ApplicationContext Context;

应用程序上下文的实例将自动装配。