关于spring注解失败的问题

前几天遇到一个问题就是关于spring注解 @Autowired注解失败问题。
场景:在controller层直接调用处理逻辑的类(Demo.java代表)我在controller层新起线程 new Thread(new Demo()).start 。这样就出现问题了。Demo.java的autowired注解注入失败,会报一个NullpointException.
原因分析:由于controller层是new出来的对象,不是交给spring进行管理的。而在Demo.java进行注入的是spring进行管理的。两者关联不在一起,所有会报空指针,找不到注入的类。

下面提供一种我的解决方法。
取消注解方式,了解spring源码的都知道 ApplicationContextAware会在bean初始化之后拿到所有的bean资源。我们可以写一个类去实现 ApplicationContextAware这个接口,获得ApplicationContext容器。然后从容器里获取bean,可以根据bean的name 或者class。
代码如下:
在这里插入图片描述
得到 ApplicationContext 有很多方法:
context.getBean(要注入的类);
然后把你定义的这个类加入到spring容器中。这个比较好理解 就是让spring容器初始化的时候加载一下你的这个类 我定义的类名是SpringApplicationUtil 在spring里配置下这个类就可以了。
<bean class="路径/SpringApplicationUtil />

然后就可以获取到这类了。

欢迎大家提出自己的见解,有问题及时交流。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值