如何在servlet取得spring beans (autowired)(轉)

在應用中通常普通的JavaPojo都是由Spring來管理的,因此使用autowire註解來進行注入不會產生問題,可是有兩個東西是例外的,一個是 Filter,一個是Servlet,這兩樣東西都是由Servlet容器來維護管理的,因此若是想和其餘的Bean同樣使用Autowire來注入的 話,是須要作一些額外的功夫的。
對於Filter,Spring提供了DelegatingFilterProxy,因此本文主要講述Servlet的解決。spring

servlet ,會碰到無法讀到 spring 定義的annotation ,解法是:在 servlet的 init method中,,寫下面的程式,
讓 spring 去 ApplicationContext 作 lookup,看 ApplicationContext 有那些已經注入(inject) 的 Spring beans。this

public void init(ServletConfig config) throws ServletException {
        super.init(config);
    SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, config.getServletContext());
}

這樣,就能夠用 spring @Autowired 等的 annotation。spa

相關文章
相關標籤/搜索