最近使用springBoot发现在拦截器中不能注入Bean,但是在controller中又能正常注入。
后面网上找了下,解决办法有两种:
第一种:将拦截器注册成bean,就能实现注入
@Configuration public class MyWebAppConfigurer extends WebMvcConfigurerAdapter
将拦截器注册成bean
@Bean MyInterceptor localInterceptor() { return new MyInterceptor(); }注册拦截器
registry.addInterceptor(localInterceptor()).addPathPatterns("/**") .excludePathPatterns(excludePathPatterns);
使用:
@Autowired private RedisTemplate<String, String> redisTemplate;
第二种:从spring容器中直接获取bean
applicationContext.getBean(stringRedisTemplate);//这里需要注意:redis对象容器中有两个对象,stringRedisTemplate和redisTemplate 我在controller中注入的默认是stringRedisTemplate,后面再拦截器中applicationContext.getBean(stringRedisTemplate)发现怎么都获取不到redis里面的对象 后面改成stringRedisTemplate就可以正常获取了