欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot使用过滤器时依赖注入失效

程序员文章站 2022-04-03 08:54:28
...

场景:

创建过滤器进行Token过滤时,无法获取实例化的redisUtiluserService

原因分析:

在过滤器中使用@Autowierd或者@Resource进行依赖注入是行不通的,因为:
Filter比Servlet先加载,用依赖注入是不行的,需要通过WebApplicationContext获取Bean

Spring加载顺序:

SpringBoot使用过滤器时依赖注入失效

解决方案:

// 获取上下文
WebApplicationContext applicationContext = WebApplicationContextUtils
    .getRequiredWebApplicationContext(request.getServletContext());

// 获取依赖
RedisUtil redisUtil = applicationContext.getBean(RedisUtil.class);
UserService userService = applicationContext.getBean(UserService.class);

整理完毕,完结撒花~

相关标签: 过滤器 过滤器