【问题标题】:how to get beans from application context loaded by contextloaderlistener?如何从 contextloaderlistener 加载的应用程序上下文中获取 bean?
【发布时间】:2014-06-11 18:04:16
【问题描述】:

我是 Spring/Spring Mvc 的新手,这是我的问题。在我的 webapp 中,除了 spring-servlet.xml 之外,我还有一个 jdbc.xml,它定义了像 datasource、dao 这样的 bean ...在使用 contextloaderlistener 之前,我将 jdbc.xml 加载到 Controller 的构造函数中,就像这样 ApplicationContext context = new ClassPathXmlApplicationContext( “jdbcbeans.xml”)然后从中获取bean。但是由于我使用 contextloaderlistener 来加载文件,我怎样才能获得对 context 的引用?我能够使用那些@Autowired 的东西来设置一切,但我只想知道有什么办法吗?

【问题讨论】:

  • 你为什么要这样做?

标签: spring spring-mvc


【解决方案1】:

您可以使用WebApplicationContextUtils

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

详情请见here

【讨论】:

    【解决方案2】:

    您可以执行以下操作来获取应用程序上下文的实例 如果是容器管理的 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;
    

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

    【讨论】:

      猜你喜欢
      • 2014-02-14
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多