簡體   English   中英

如何從contextloaderlistener加載的應用程序上下文中獲取bean?

[英]how to get beans from application context loaded by contextloaderlistener?

我是Spring / Spring Mvc的新手,這是我的問題。 在我的web應用程序中,除了spring-servlet.xml之外,我還有一個jdbc.xml,它定義了諸如數據源,dao之類的bean。在使用contextloaderlistener之前,我將jdbc.xml加載到了控制器的構造函數中,例如ApplicationContext context = new ClassPathXmlApplicationContext( “ jdbcbeans.xml”),然后從中獲取bean。 但是,由於我正在使用contextloaderlistener加載文件,因此如何獲得對上下文的引用? 我能夠使用這些@Autowired東西來設置一切,但是我只想知道有什么方法可以做到這一點?

您可以使用WebApplicationContextUtils

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

有關詳細信息,請參見此處

如果容器管理的bean使用ApplicationContextAware接口,則可以執行以下操作來獲取Application Context的實例

    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;

Application Context的實例將被自動裝配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM