一、 平时用多线程的情况不是很多,最近有个同事问我为什么代码里报空指针异常了,跟踪代码发现异常出现在获取spring注入bean中get具体属性的时候报错。
当时是一个懵逼的状态,后才查阅资料才想起来,因为spring为了考虑安全性问题,在多线程情况下,不支持直接使用 @Resouce 注解方式进行直接的bean注入,那么也就是说,如果在多线程调用该注入实例化的变量时,将会报NullPointerException。
解决办法:
主线程可以获取到spring注入的bean 构造函数返回获取值二、 junit出现异常的原因是:
因为junit一般会走最小化的方式,而非每次都要将整个框架的东西载入,从而减少加载时间。当然,如果确实需要,这个问题,其实目前在高版本的junit中,已经不存在了,通过加载 SpringJUnit4ClassRunner,即可进行注入值。
解决方法:
通过getBean的方式获取需要的bean,因为仅仅是单元测试,加载资源稍微多些也没有关系。解决方案2:
使用高版本的junit进行测试
网友评论