原由

在Filter中通过@autowired无法将redisUtils注入

解决方案

首先明确一点

Web容器初始化顺序是按照Listener-filter-servlet的顺序进行,因为dispatcherServlet是在filter之后才进行初始化,也就是这个时候我们要自动注入的bean才被初始化。
所以此时在filter中自动注入的时候还没有bean,所以会注入失败。

我们直接从WebApplicationContext上下文中获取bean,赋值给redisUtils。

ServletContext sc = req.getSession().getServletContext();
        WebApplicationContext cxt = WebApplicationContextUtils.getWebApplicationContext(sc);
        RedisUtils redisUtils = cxt.getBean(RedisUtils.class);
我的文章对您有帮助吗?
我很可爱 请给我钱
扫一扫拿红包 → 扫商家收款码 → 花呗支付比红包多1分钱的金额
既可免费赞赏,又可完成支付宝支付任务!
最后修改:2020 年 05 月 16 日
如果觉得我的文章对你有用,请随意赞赏