实现步骤:
1.导入依赖包:数据源 c3p0 , 数据库驱动:mysql-connector-java , spring事务包:这时导入spring-jdbc,该包依赖spring-tx, maven会自动导入依赖
<dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.15</version> <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency>
2.@EnableTransactionManagement开启事务管理器
3.@Transactional标在方法上(也可以标在类上),表明这时一个事务方法
这时测试出现错误:NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.transaction.PlatformTransactionManager' available
解决思路:一看就是找不到bean,那么就配置这个bean
配置PlatformTransactionManager: 找到PlatformTransactionManager接口,看它的实现类,选org.springframework.jdbc.datasource包下的
DataSourceTransactionManager实现类。
@Beanpublic PlatformTransactionManager transactionManager() throws Exception {DataSourceTransactionManager manager=new DataSourceTransactionManager(dataSource());return manager;}
到此声明式事务环境搭建好了。。。