配置文件中没有写要扫描的包。
即这句话:
<context:component-scan base-package="包全名" />
单元测试代码:
// 省略import
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= {"classpath:spring.xml"})
public class MapperTest {
@Autowired
DeptMapper deptMapper;
@Test
public void testDeptAdd() {
System.out.println(deptMapper);
}
}
说说我的问题吧!我在进行单元测试的时候,出现了这个错误,网上一查才知道是,配置文件中没有写扫描包信息。一看加载的是spring.xml文件,就去这个文件中查找了。
spring.xml文件
<!-- 注解扫描包 -->
<context:component-scan base-package="com.ssm" />
<!-- 省略其他无关紧要的配置 -->
<!-- 配置扫描器,将mybatis接口的实现加入spring中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 扫描所有dao接口的实现,加入到ioc容器中 -->
<property name="basePackage" value="com.ssm"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
我写了扫描包的信息了,怎么会出错呢?再仔细一看context:component-scan标签的内容,哦!扫描的包写错了。修改之后,再次运行测试代码,还是出现这个错误,这下可就真的不知道怎么弄了。没办法就继续看是不是其他哪里写错了,这一找还真发现了问题。在“扫描所有dao接口的实现,加入到ioc容器中”这个注释下面的包名又写错了。唉!还真是粗心大意啊!明明写着注释竟然还是写错!真的是笨啊!
总结:因为粗心忘写扫描包的配置信息,或者写了扫描包的配置信息但是包名写错了,就会导致这个错误的发生。