filter注入service报空指针

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/chenyao1994 https://blog.csdn.net/chenyao1994/article/details/86066044

其实Spring中,web应用启动的顺序是:listener->filter->servlet,先初始化listener,然后再来就filter的初始化,再接着才到我们的dispathServlet的初始化,因此,当我们需要在filter里注入一个注解的bean时,就会注入失败,因为filter初始化时,注解的bean还没初始化,没法注入。

public class AuthenticationTokenFilter implements Filter {
private JedisUtil.Strings jedisStrings;
 	@Override
    public void init(FilterConfig fConfig) throws ServletException {
        ServletContext sc = fConfig.getServletContext();
        XmlWebApplicationContext cxt = (XmlWebApplicationContext) 
        WebApplicationContextUtils.getWebApplicationContext(sc);
        if (cxt != null && cxt.getBean("jedisStrings") != null && jedisStrings == null)
            jedisStrings = (JedisUtil.Strings) cxt.getBean("jedisStrings");
    }
   ...
   ...
}

猜你喜欢

转载自blog.csdn.net/chenyao1994/article/details/86066044