今天在使用Spring mvc与Mybatis整合的项目的时候,遇到了新的坑。
我使用了JUnit,写了一个测试程序去测试从service层到dao层的一整个分支。但是JUnit一直给我报错…expected at least 1 bean which qualifies as autowire candidate for this depende…还有…Error creating bean with name…
从报错信息来看,就是service或者dao层的实现类没有注入成功,需要将注解都写清楚。但是我反反复复去查看我的代码,发现所有的注解全部都写清楚了……
然后我又想起来去查看SpringMVC配置文件中的“扫描包”的配置,发现也没有问题……
然后我开始怀疑人生了……!!!
再往后!!!!发现了新问题
在测试类上面,必须要写清楚两个注解,一个是@RunWith,一个是@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:framework/springmvc/webApiConfig.xml", "classpath:framework/mybatis/database-config.xml"})
public class TestItem extends AbstractJUnit4SpringContextTests{
//...
}
在我将webApiConfig这个xml配置完全之后,JUnit的报错信息改变了……提示是另一个service没有注入成功!!!
而这个项目是合作的…这个service不是我写的…巨坑!!!
在我将包含这个service的xml一起写到@ContextConfiguration的时候(即:classpath:framework/mybatis/database-config.xml)再次启动JUnit,测试通过。此时,一口老血喷出来。
这是第一次合作一个较大的项目,其中的艰辛,不想多说~~
小结:一般web项目报什么错,就是相关的内容出了问题不会错。只是报错的信息有时候太隐晦了,不是很能看懂。
像本例,既然发现自己的注解注入的具体代码没写错,就应该从相关的配置导入的层面上去寻找相关的解决办法。