目的是测试事务管理,通过面向切面编程和配置文件的方式
原码如下:
接口:
实现类:
测试方法:
报错:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.atguigu.crowd.service.api.AdminService'
原因分析:报错说没有找到有资格的AdminService这个类,但AdminService的实现类有注解@Service,不应该找不到,但发现另一个问题,就是实现类中AdminMapper没有加上注解@Autowired,按道理这应该是报空指针异常的,那么找不到类的原因到底是什么呢?
看完下图就知道了:
我进行的测试是通过spring自带的测试工具进行测试的,且没有配置web.xml进行扫描,也没有造IOC容器classPathXMLApplicationContext,那么数据控制的配置文件是不会读取或者说加载到内存中的。
解决方案:
只需在注解@ContextConfiguration后加上事务配置文件的classPath就可以了
@ContextConfiguration(locations = { "classpath:spring-persist-mybatis.xml","classpath:spring-persist-tx.xml" })