前面介绍的几篇事务的博文,主要是利用@Transactional注解的声明式使用姿势,其好处在于使用简单,侵入性低,可辨识性高(一看就知道使用了事务);然而缺点也比较明显,不够灵活,稍不注意,可能就因为姿势不对,导致事务不生效
本文将介绍另外一种事务的使用姿势,借助TransactionTemplate的编程式事务
I. 配置
本篇主要介绍的是jdbcTemplate+transactionTemplate来完成一个编程式事务的实例 demo
创建一个 SpringBoot 项目,版本为2.2.1.RELEASE,使用 mysql 作为目标数据库,存储引擎选择Innodb,事务隔离级别为 RR
1. 项目配置
在项目pom.xml文件中,加上spring-boot-starter-jdbc,会注入一个DataSourceTransactionManager的 bean,提供了事务支持
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-jdbc
2. 数据库配置
进入 spring 配置文件application.properties,设置一下 db 相关的信息
## DataSource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/story?useUnicode=true&characterEncoding=UTF-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=
3. 数据库
新建一个简单的表结构,用于测试
CREATE TABLE `money` (
`id` int(11) unsigned NO