在應用中通常普通的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