问题:
在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); } }