filter中@Autowired为null解决办法
Posted 滴滴哒滴哒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了filter中@Autowired为null解决办法相关的知识,希望对你有一定的参考价值。
filter中@Autowired为null原因是
filter在servlet容器初始化之前,导致我们filter中无法使用依赖注入
public class AccessFilter implements Filter
@Autowired
private RedisUtils redisUtils;
@Override
public void init(FilterConfig filterConfig) throws ServletException
//解决filter无法依赖注入的问题
ServletContext sc = filterConfig.getServletContext();
WebApplicationContext cxt = WebApplicationContextUtils.getWebApplicationContext(sc);
if (cxt != null && cxt.getBean("redisUtils") != null && redisUtils == null)
redisUtils = (RedisUtils) cxt.getBean("redisUtils");
@Override
public void destroy()
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
filterChain.doFilter(servletRequest,servletResponse);
原理从运行上下文去寻找实例,实现注入
以上是关于filter中@Autowired为null解决办法的主要内容,如果未能解决你的问题,请参考以下文章
解决非controller使用@Autowired注解注入为null问题
SpringBoot拦截器使用@Autowired注入接口为null解决方法
Java 各级注解及@Autowired注入为null解决办法
SpringBoot 集成 quartz @Autowired为null