??基于最新Spring 5.x,详细介绍了Spring 事务源码,包括createTransactionIfNecessary方法,该方法尝试创建并处理事务,是核心方法。
??此前的文章中,我们介绍了Spring AOP中最重要的类之一——TransactionInterceptor事务拦截器的工作总体流程,以及invoke方法的前半部分源码。现在我们继续向后看,我们来看看最重要的createTransactionIfNecessary
方法的源码。
Spring 事务源码 系列文章
Spring 5.x 源码汇总
Spring 事务源码(1)—<tx:advice/>事务标签源码解析
Spring 事务源码(2)—<tx:annotation-driven/>事务标签源码解析
Spring 事务源码(3)—@EnableTransactionManagement事务注解源码解析
Spring 事务源码(4)—BeanFactoryTransactionAttributeSourceAdvisor注解事务通知器源码解析
Spring 事务源码(5)—TransactionInterceptor事务拦截器与事务的AOP增强实现
Spring 事务源码(6)—createTransactionIfNecessary处理事务属性并尝试创建事务【两万字】
Spring 事务源码(7)—事务的completeTransactionAfterThrowing回滚、commitTransactionAfterReturning提交以及事务源码总结【一万字】
文章目录
- Spring 事务源码 系列文章
- 1 createTransactionIfNecessary尝试创建并开启事务
- 2 TransactionInfo事务信息
- 3 getTransaction获取/开启事务
- 3.1 doGetTransaction获取事务连接
- 3.1.1 TransactionSynchronizationManager事务同步管理器
- 3.1.2 TransactionSynchronization事务同步
- 3.1.3 obtainDataSource获取数据源
- 3.1.4 getResource获取已存在的连接
- 3.2 isExistingTransaction是否已存在事务
- 3.3 suspend挂起事务
- 3.3.1 isSynchronizationActive是否激活事务同步
- 3.3.2 doSuspendSynchronization挂起事务同步
- 3.3.3 doSuspend挂起事务
- 3.4 startTransaction开启新事物
- 3.4.1 newTransactionStatus开启新事物
- 3.4.2 doBegin真正开启事务
- 3.4.2.1 prepareConnectionForTransaction准备事务连接
- 4.4.2.2 prepareTransactionalConnection优化只读事务
- 4.4.2.3 determineTimeout确定超时时间
- 4.4.2.4 setTimeoutInSeconds设置超时deadline
- 4.4.2.5 bindResource绑定资源到resources
- 4.2.4.3 prepareSynchronization准备事务同步
- 3.2.5 prepareTransactionStatus准备事务状态
- 3.2.6 handleExistingTransaction处理已存在事务
- 3.2.6.1 createAndHoldSavepoint创建保存点
- 4 小结
cs