Servlet中使用@Autowired注解报错空指针问题
都2023年了,居然还能碰到这么远古的代码!!!
最近在修改某银行项目代码时遇到一个这样的问题,就是我定义的 Servlet 中用到了@Autowired 注解,但是运行项目时会报错空指针异常。
确定当前Servlet是加了 @Component 注解的,非常纳闷的是,被注入的那个类,在别处就注入成功了,唯独在当前这个 Servlet 中是空指针。
定位到是 Servlet 的问题后才查到原因所在,说是 Bean 都是归 Spring 容器管理的,但是 Servlet 单独有一个容器,归 Tomcat 管理,所以这样注入是有问题的。于是在重写 init() 方法里加上如下配置就好了。
public void init(ServletConfig config) throws ServletException {
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, config.getServletContext());
}
然后就可以愉快的使用 @Autowired 注解啦。