多线程环境(或者junit)下无法使用spring依赖注入
2018-08-16 本文已影响175人
小超人爱小土豆
一、 平时用多线程的情况不是很多,最近有个同事问我为什么代码里报空指针异常了,跟踪代码发现异常出现在获取spring注入bean中get具体属性的时候报错。
当时是一个懵逼的状态,后才查阅资料才想起来,因为spring为了考虑安全性问题,在多线程情况下,不支持直接使用 @Resouce 注解方式进行直接的bean注入,那么也就是说,如果在多线程调用该注入实例化的变量时,将会报NullPointerException。
解决办法:
![](https://img.haomeiwen.com/i4240218/bfb77f498eca84fa.png)
![](https://img.haomeiwen.com/i4240218/6452abc954662bb3.png)
二、 junit出现异常的原因是:
因为junit一般会走最小化的方式,而非每次都要将整个框架的东西载入,从而减少加载时间。当然,如果确实需要,这个问题,其实目前在高版本的junit中,已经不存在了,通过加载 SpringJUnit4ClassRunner,即可进行注入值。
解决方法:
![](https://img.haomeiwen.com/i4240218/16f6facaad1f5bbe.png)
解决方案2:
![](https://img.haomeiwen.com/i4240218/b993551673b4874f.png)