您的位置:首页 > 编程语言 > Java开发

servlet中利用spring的注解@Autowired自动注入service失败,优雅的解决方法

2017-09-15 18:48 1226 查看
一个项目启动时,有一些系统参数希望在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();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring servlet Autowired