解决 Springboot中Interceptor拦截器中依赖注入失败
问题:
在Springboot拦截器Interceptor中使用@Resource依赖注入时,发现运行的时候被注解的对象居然是null,没被注入进去
原配置为:
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(final InterceptorRegistry registry) {
registry.addInterceptor(new UserInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/login/**", "/logout/**", "/loginPage/**", "/error/**");
super.addInterceptors(registry);
}
}
解决:
在Spring添加拦截器之前先自己创建一下这个Spring Bean,这样就能在Spring映射这个拦截器前,把拦截器中的依赖注入给完成了。
修改配置:
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Bean
public UserInterceptor userInterceptor() {
return new UserInterceptor();
}
@Override
public void addInterceptors(final InterceptorRegistry registry) {
registry.addInterceptor(userInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/login/**", "/logout/**", "/loginPage/**", "/error/**");
super.addInterceptors(registry);
}
}