Loushang+spring事物

1父类BaseService默认写了TransactionTemplate的get和set方法

2子类实现了注入

jdbcTransactionTemplate就是BaseService中的TransactionTemplate

3子类实现事物的调用

4获取事物模板

getTransactionTemplate()方法是继承BaseService的获取TransactionTemplate的get方法。

Execute()方法是TransactionTemplate中的执行方法。

5获取execute方法的参数

Execute()要求的参数是TransactionCallback action

TransactionCallback 是接口

所以传参必须实现接口

6实现TransactionCallback

我们的传参为new TransactionCallbackWithoutResult()

TransactionCallbackWithoutResult 抽象类

7实例化抽象方法

我们要实例化TransactionCallbackWithoutResult必须实例化抽象类中的抽象方法

即doInTransactionWithoutResult(TransactionStatus var1)方法

8参数TransactionStatus

doInTransactionWithoutResult(TransactionStatus var1)在excute方法里实现调用,所以他的参数TransactionStatus var1也是在excute方法里传递的

9分析excute方法-transactionManager

this.transactionManager来自于配置文件的注入

this.transactionManager = jdbcTransactionManager

jdbcTransactionManager其实是DataSourceTransactionManager

所以这里是false,走else方法

10执行doInTransaction

如有异常则走回滚方法

rollbackOnException

11事物提交commit

this.transactionManager.commit(status);

实际上是DataSourceTransactionManager里面的doCommit方法,即jdbc驱动里面的提交事物方法

12整体类图

描述:

1PortraitService继承BaseService

2PortraitService调用事务模板TransactionTemplate的excute方法

3TransactionTemplate调用TransactionCallBack的回调方法doInTransaction

4TransactionTemplate调用平台事务管理PlatformTransactionManager的commit和rollback方法

5数据源事物管理器DataSourceTransactionManager继承PlatformTransactionManager,引用数据源DataSource,实现真正的提交和回滚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值