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();
}
}
}
但初始化参数时要用到一些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 注解Autowired自动注入bean异常解决
- 因Spring AOP导致@Autowired依赖注入失败的解决方法
- Spring4-自动装配Beans-通过注解@Autowired在构造方法上
- SpringMVC注解@Autowired和@Qualifier 自动注入[根据类型注入] @Autowired 可以对成员变量、方法以及构造函数进行注释, @Qualifier 的
- 解决 SpringMvc 非controller类使用@Autowired注解 service注入为null的问题
- 【SpringBoot】拦截器使用@Autowired注入接口为null解决方法
- 从头认识Spring-2.3 注解装配-@autowired(3)-通过构造器方法注入
- Servlet自动注入Spring容器中的Bean解决方法
- servlet让spring自动注入解决方法
- spring boot 中@Autowired注解无法自动注入的错误
- 【SpringBoot】拦截器使用@Autowired注入接口为null解决方法
- 从头认识Spring-2.3 注解装配-@autowired(3)-通过构造器方法注入
- spring + springmvc 项目中 @Autowired 自动转载失败问题及解决
- 如何解决SpringBoot JpaRepository @Autowired 没法自动注入的问题
- servlet让spring自动注入解决方法
- spring mapper注入到service失败的解决方法
- 从头认识Spring-2.3 注解装配-@autowired(2)-通过set方法或者其他方法注入
- @Qualifier注解缩小@Autowired自动注入的范围【Spring 入门】
- spring对Filter和Servlet无法使用自动注入属性解决方法
- 利用Lombok编写优雅的spring依赖注入代码,去掉繁人的@Autowired