springmvc自定义的拦截器导致的NullPointerException
这块拦截器作用是帮助界面进行渲染的
排查思路:
1.注释掉拦截器相关代码,controller与js那边检查都是没问题的,看看自定义拦截器的是不是参数或者哪里传错了,也都是ok的。
2.那就去看看WebMvcConfigurer下的
@Configuration,果然找到了问题
public OtherInterceptor getOtherIntercepter(){
return new OtherInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry){
registry.addInterceptor(getOtherIntercepter()).addPathPatterns("/**");
}
忘记做拦截器@bean注释,第一次这里遇到问题是没有重写addInterceptors,修改如下
//加上@bean,类上加上@configgur
@bean
public OtherInterceptor getOtherIntercepter(){
return new OtherInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry){
//所有请求都被拦截
registry.addInterceptor(getOtherIntercepter()).addPathPatterns("/**");
}
没有把他放到spring容器中,导致的。
当然有没有@Configuration注解,@Bean都会起效,都会将@Bean修饰的方法作为bean注册到容器中
被@Configuration修饰的类,spring容器中会通过cglib给这个类创建一个代理,代理会拦截所有被@Bean 修饰的方法,默认情况(bean为单例)下确保这些方法只被调用一次,从而确保这些bean是同一个bean,即单例的。