文章目录
- 问题描述
- 问题原因
- 问题解决
- 解决方法一
- 解决方法二
- 总结
问题描述
今天在使用拦截器的时候遇见了一个奇怪的错误,就是在对拦截器进行属性注入的时候为null,具体如下
运行代码出现空指针异常
就是注入的Gson为null,这个问题很奇怪,因为明明将拦截器交给spring管理了,为什么还会注入不成功呢?
问题原因
这个问题是由于错误创建Bean对象导致的,在进行拦截器设置的时候写法如下
我们使用了new关键字来创建了拦截器,这样就导致了这个对象并不是由spring创建的,当然也就不会被spring进行管理,即使使用了@Component
问题解决
解决方法一
不使用new的方式创建拦截器,改成如下形式
使用spring管理的单例对象,不再自己new对象
解决方法二
通过构造器来进行属性赋值
在new的时候将需要使用到的对象传递过去
总结
在使用spring开发的时候需要注意spring容器的作用范围,平时有空的时候多去看看spring的源码