拦截器中使用redis一直空指针异常无法注入与获取
问题:
在拦截器中使用@Autowired自动注入redis为null,并且使用set与get方法会报NullPointException异常,但是在test中却能使用set和get方法。
代码:
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/user/**");
}
原因:
我们定义的拦截器LoginHandlerInterceptor() 。是通过自己new出来的而不是引入springBean容器初始化时,已经初始化好了的bean实例,此时若是在LoginHandlerInterceptor类内使用@Autowired引入bean实例,必然导致无法注入,实例为null的情况。
最终代码:
@Bean
public LoginHandlerInterceptor loginHandlerInterceptor() {
return new LoginHandlerInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginHandlerInterceptor()).addPathPatterns("/user/**");
}