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解决办法的主要内容,如果未能解决你的问题,请参考以下文章