问题引出:

因为想利用拦截器的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);
    }

}
 posted on 2020-01-17 16:28  11HAN  阅读(491)  评论(0)    收藏  举报