事务的创建提交与回滚流程
2022-12-08 16:31:27 0 举报
事务的创建提交与回滚流程
作者其他创作
大纲/内容
不是
commitTransactionAfterReturning已正常的方式提交事务
行具体的业务逻辑的时候是否有异常情况
挂起当前事务
判断事务的超时属性
创建空的事务
getTransactionAttribute后期某一个方法对应的具体的事务属性等相关信息
设置事务属性
invocation.proceedWithlnvocation()执行方法的具体处理逻辑
TransactionSynchronizationManager.getResource通过此对象来获取连接持有器,在第一次调用的时候,对象一定为空,后续创建完成之后会进行设置工作,方便写一次获取
是
对象中包含了保存点,连接持有器等相关信息
不是
getTransaction获取事务
completeTransactionAfterThrowing完成当前事务的回滚
以非事务状态运行
getTransactionAttributeSource获取事务方法锁对应配置的事务属性集合
doGetTransaction
获取事务定义信息
传播特性是否是REQUIREDREQUIRED NENESTE
不满足
以当前的事务状态继续执行下去
判断当前事务要求的传播特性是否是PROPAGATIONMANDATORY
判断传播特性是否是required new
isExisting Transaction判断是否已经存事务
否
cleanupTransactionlnfo清除事务信息
设置保存点
进行封装到一个委托对象中
doBegin开启事务
createTransactionlfNecessary创建事务
DataSourceTransactionObject创建数据源事务对象
Attr不为空且txAttr包含具体的方法名称
挂起事务
判断传播特性是否是NESTED
有
没有
Attr不为空国事务管理器不为空
prepareTransactionlnfo创建事务信息对象,包含了事务处理过程中的相关属性值
判断事务的传播特性是否是not supportted
不存在
开始事务startTransaction
开启一个新的事务开始执行
设置自动提交关闭
抛出异常
存在
以当前事务状态继续执行
isVandateExistingTransaction验证当前存在的事务
info
获取数据库连接
如果一个事务方法调用了另一个事务方法,需要进行传播特性的判断,因为传播特性会影响到事务的提交和回滚
status
判断事务的传慢特性是否是Never
创建新事务的状态对象
determineTransactionManager获取事务管理器
invokeWithinTransaction开始事务的处理逻辑
0 条评论
下一页