描述:想用在使用jwt生成token然后放在redis中来实现token登录,生成的token保存在redis中,然后以全局拦截器的形式获取请求中获取token进行校验,问题就发生了,RedisUtil类一直无法注入。如下图;

问题:springboot自定义拦截器时@Autowired下的Bean为null

原因:拦截器加载的时间点在springcontext之前,所以在拦截器中注入自然为null

解决办法就是bean注解提前加载提前注入ioc容器中

(建议使用基于构造函数的注入,以使它们成为不可变的,并防止它们为null)

public userInterceptor(RedisUtil redisUtil) {
        this.redisUtil = redisUtil;
    }

在拦截器中加入

registry.addInterceptor(new userInterceptor(redisUtil)).addPathPatterns("/**");

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐