原创

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();
		}		
	}

}


正文到此结束
本文目录