1.项目需要自定义了一个拦截器,需要在拦截器中获取对应的值所以使用了@Autowired以及@Value注解,但是这么引入取到的值都是NULL值,DEBUG查看以下三个值都为NULL
2.先说下原因,导致为NULL的原因是
(1)拦截器加载的时间点是先于SpringContext的
(2)在代码中使用了new GisInterceptor()(这个GisInterceptor是我自己定义的拦截器名称),new GisInterceptor()会导致个类完全没有交给Spring容器管理,所以@Autowired以及@Value不会在自己定义的拦截器中生效
3.最后说解决方法
(1). 将自己定义的拦截器交给spring容器管理,也就是在自己定义的拦截器上加上@Component注解
(2)代码中有用到new GisInterceptor()的,就用注入代替
我是因为在下面图片的类中用到了new GisInterceptor(),所以在这里用注入代替了new
以上解决方法亲测有效,如果按照上面的修改方法没生效,也可以看下这位老哥的解决方法,
关于拦截器中使用@Autowired以及@Value注解值为null的问题
最新推荐文章于 2024-01-19 17:39:07 发布