Spring Junit整合时依赖注入问题

最近在做Java的课设,使用到Spring框架和Junit单元测试框架,在进行单元测试的时候,测试类中的成员变量使用依赖注入一直注入失败,提示null空指针错误。日志也写着注入了,一直查不出来。最后一个师兄点破玄机:Junit测试类是独立于Spring容器的,并不受Spring管理。

在查询过其它资料之后,可以给出以下结论: junit单元测试其实是一个独立的单元测试,它跟你的上下文是没有关系的!原因嘛,据说是因为spring为了考虑安全性问题,在多线程情况下,不支持直接使用 @Resouce 注解方式进行直接的bean注入,那么也就是说,如果在多线程调用该注入实例化的变量时,将会报NullPointerException 。


解决方案:①通过ApplicationContext加载Spring配置文件,再使用getBean获得需要的bean


②使用Spring的解决方案,在测试类名上加上下面的注解
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration({
    //这里写Spring的配置文件
    "classpath:conf-spring/spring-dao.xml",
    "classpath:conf-spring/spring-service.xml",
    "classpath:conf-spring/spring-controller.xml"})





这里只做个简单说明,避免其它人再踩坑,也给自己留个提醒。


具体原因分析可以看下另一个大神的博客,传送门: http://blog.csdn.net/u013864585/article/details/45689479

你可能感兴趣的:(SSM学习)