最近使用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就可以正常获取了