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

Spring boot下@Autowired 注入为 NULL的问题

SpringBoot自行new出的对象中的成员变量不能使用@Autowired注入的解决办法