问题引出:
因为想利用拦截器的aop特性来进行日志记录,但是注入依赖后运行时一直报空指针异常。
@Autowired
LogRepository logRepository;
问题解决:
百度查了下,发现是启动顺序的原因,拦截器先于ApplicationContext加载,所以无法注入依赖,只要在@Configuration中如下配置:
@Configuration public class InterceptorConfig implements WebMvcConfigurer { /** * 若要在Interceptor中进行依赖注入,则需要 * 将拦截器注册为一个 Bean * @return */ @Bean public PermissionInterceptor permissionInterceptor() { return new PermissionInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(permissionInterceptor()) .addPathPatterns("/**") //默认过滤全部 .excludePathPatterns("/exclude/**") //需要排除的地址 WebMvcConfigurer.super.addInterceptors(registry); } }
原文:https://www.cnblogs.com/11HAN/p/12206431.html