springBoot拦截器中不能注入Bean

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



猜你喜欢

转载自blog.csdn.net/dailingnan0827/article/details/80304195
今日推荐