spring事务深入剖析 - 一些重要状态对象的分析

在spring的事务运行过程中,需要保存一些状态,涉及的一些对象如下

1. TransactionSynchronizationManager

2. SuspendedResourcesHolder

3. DefaultTransactionStatus

 

底层以JDBC DataSourceTransactionManager为例,状态对象

1. DataSourceTransactionObject

2. ConnectionHolder

 

下面逐一进行分析说明

 TransactionSynchronizationManager-使用TreadLocal记录事务的一些属性,用于应用扩展同步器的使用,在事务的开启,挂起,提交等各个点上回调应用的逻辑

 

ThreadLocal<Map<Object, Object>> resources - 应用代码随事务的声明周期绑定的对象
ThreadLocal<Set<TransactionSynchronization>> synchronizations-使用的同步器,用于应用扩展
ThreadLocal<String> currentTransactionName-事务的名称
ThreadLocal<Boolean> currentTransactionReadOnly-事务是否是只读
ThreadLocal<Integer> currentTransactionIsolationLevel-事务的隔离界别
ThreadLocal<Boolean> actualTransactionActive-事务是否开启 
  TransactionSynchronizationManager状态变化的点

 

1. 开启新的事务时初始化TransactionSynchronizationManager属性,即第一次开启事务;已存在事务,但根据事务的传播属性需要开启新事务,这两个点。

 

public final TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException {
    doBegin(transaction, definition);
    prepareSynchronization(status, definition);
}

private TransactionStatus handleExistingTransaction(
			TransactionDefinition definition, Object transaction, boolean debugEnabled)
			throws TransactionExcepti
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值