之前登录系统用jwt的时候, 用RedisTemplate 使用redis, 遇到过这样一个问题, 在token验证拦截器 中要使用到RedisTemplate 连接到redis 取出存进去的token, 结果注入RedisTemplate时没注入进去, 为null了. 想想也对, 拦截器在上下文context之前, 怎么会注入呢
我的拦截器如下:
在自定义WebConfig中加入上面定义的拦截器:
使用postman调用的时候。发现出现了空指针异常,debug发现,AccessLimitInterceptor中的Redistemplate为null。静下来想一想,拦截器加载的时间点在springcontext之前,即在bean实例化之前,所以在拦截器中注入自然为null 。那么我们就让拦截器执行的时候实例化拦截器Bean,在拦截器配置类里面先实例化拦截器,然后再获取就能解决这个问题啦。
springBoot 使用RedisTemplate 整合Redis 详见 SpringBoot使用RedisTemplate整合Redis