servlet中利用spring的注解@Autowired自动注入service失败,优雅的解决方法
一个项目启动时,有一些系统参数希望在web.xml加载时自动初始化:这时可以利用servlet的init方法,初始化系统参数到ServletContext。
但初始化参数时要用到一些service,如果想往常一样利用@Autowired注入service,就会在项目启动时此servlet的init方法会报错;解决这个注入失败的方法有很多,其中有一种方法感觉跟优雅,就是添加这条语句:SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, application);
public class SysParamInitServlet extends HttpServlet {
@Autowired
SysParamService sysParamService;
public void init() throws ServletException {
super.init();
ServletContext application = this.getServletContext();
// 解决servlet用@Autowired自动注入service失败的问题
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, application);
try {
// Map<sysParamField, Map<sysParamValue, sysParamText>>
application.setAttribute("sysParamMap", sysParamService.getParamMap());
} catch (Exception e) {
LogManager.getLogger(getClass()).error("严重!初始化系统参数失败。", e);
e.printStackTrace();
}
}
}
正文到此结束