在spring应用中一般普通的JavaPojo都是由Spring来管理的,所以使用autowire注解来进行注入不会产生问题,但是有两个东西是例外的,一个是 Filter,一个是Servlet,这两样东西都是由Servlet容器来维护管理的,所以如果想和其他的Bean一样使用Autowire来注入的 话,是需要做一些额外的功夫的.
对于servlet
public abstract class BaseServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 2206697257304836746L;
/**
* spring 管理的bean 的提取
* @param name
* @return
*/
public Object getBean(String name) {
return WebApplicationContextUtils.getWebApplicationContext(getServletContext()).getBean(name);
}
}
让其他servlet extends BaseServlet 就直接使用 getBean
2. Filter
/**
* spring 管理的bean 的提取
* @param name
* @return
*/
public Object getBean(HttpServletRequest request,String name) {
return WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext()).getBean(name);
}