spring事务管理

2020-07-25  本文已影响0人  呆呆猿

原理是通过ThreadLocal实现的,看源码


image.png

先从transactionTemplate.execute开始


image.png

获取Transaction AbstractPlatformTransactionManager.getTransaction,
一些事务的传播性,默认是TransactionDefinition.PROPAGATION_REQUIRED
执行 startTransaction()方法

image.png

DataSourceTransactionManager.doBegin


image.png

绑定ConnectionHolder到ThreadLocal


image.png

再看来下dao层是如何获取Connection的
执行update方法


image.png

看execute


image.png

DataSourceUtils.getConnection 获取Connection

image.png

TransactionSynchronizationManager.getResource(dataSource)就能获取到之前存入的ConnectionHolder了


image.png
上一篇下一篇

猜你喜欢

热点阅读