實現步驟:
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實現類。
@Bean public PlatformTransactionManager transactionManager() throws Exception { DataSourceTransactionManager manager=new DataSourceTransactionManager(dataSource()); return manager; }
到此聲明式事務環境搭建好了。。。