springboot拦截器无法进行属性注入

问题描述

今天在使用拦截器的时候遇见了一个奇怪的错误,就是在对拦截器进行属性注入的时候为null,具体如下
在这里插入图片描述
在这里插入图片描述
运行代码出现空指针异常
在这里插入图片描述
就是注入的Gson为null,这个问题很奇怪,因为明明将拦截器交给spring管理了,为什么还会注入不成功呢?

问题原因

这个问题是由于错误创建Bean对象导致的,在进行拦截器设置的时候写法如下

在这里插入图片描述
我们使用了new关键字来创建了拦截器,这样就导致了这个对象并不是由spring创建的,当然也就不会被spring进行管理,即使使用了@Component

问题解决

解决方法一

不使用new的方式创建拦截器,改成如下形式
在这里插入图片描述
使用spring管理的单例对象,不再自己new对象

解决方法二

通过构造器来进行属性赋值

在这里插入图片描述
在这里插入图片描述

在new的时候将需要使用到的对象传递过去

总结

在使用spring开发的时候需要注意spring容器的作用范围,平时有空的时候多去看看spring的源码

猜你喜欢

转载自blog.csdn.net/m0_51545690/article/details/131780191