Spring在事务实现过程中抽象出来以下几个数据模型,用于支撑整个事务架构。

一.核心组件

1.TransactionDefinition

TransactionDefinition负责定义事务相关属性,包括隔离级别,传播行为等,是事务管理元数据。我们通过@Transaction声明事务时,最终都转换成TransactionDefinition来表示,类似与BeanDefinition的味道。

查看大图

TransactionDefinition类图

2.TransactionStatus

TransactionStatus表示整个事务处理过程中的事务状态,我们能够通过它对事务提交进行干预。

查看大图

TransactionStatus类图

3.PlatformTransactionManager

PlatformTransactionManager管理事务的顶层接口,定义提交/回滚操作,具体管理时委托给子类来实现。

查看大图

PlatformTransactionManager类图

4.TransactionSynchronizationManager

TransactionSynchronizationManager:管理线程事务上下文,保证资源的线程安全,是Spring事务管理的重要组件。

查看大图

TransactionSynchronizationManager类图

二. AOP套件

1.TransactionAttributeSourcePointcut

TransactionAttributeSourcePointcut:为接入AOP体系,Pointcut接口的实现类。大家可能好奇为什么看到TransactionAttributeSourcePointcut是抽象接口,具体实现在哪,在BeanFactoryTransactionAttributeSourceAdvisor中,以匿名内部类方式提供的。

查看大图

TransactionAttributeSourcePointcut类图

2.TransactionInterceptor

TransactionInterceptor:为接入AOP体系,Advice接口的实现类,TransactionInterceptor属于环绕通知。

查看大图

TransactionInterceptor类图

3.BeanFactoryTransactionAttributeSourceAdvisor

BeanFactoryTransactionAttributeSourceAdvisor:为接入AOP体系,Advisor接口的实现类。

查看大图

BeanFactoryTransactionAttributeSourceAdvisor类图

三. 其他组件支持

1.TransactionAttributeSource

TransactionAttributeSource用于获取方法的TransactionDefinition信息。

查看大图

TransactionAttributeSource类图

2.TransactionAnnotationParser

TransactionAnnotationParser用于解析注解中的元数据,不同技术栈的事务属性定义,统一转换为TransactionAttribute。

查看大图

TransactionAnnotationParser类图

3.JdbcTransactionObjectSupport

JdbcTransactionObjectSupport主要对保存点生命周期管理。

查看大图

JdbcTransactionObjectSupport类图

4.ResourceHolderSupport

ResourceHolderSupport主要封装持有的资源。

查看大图

ResourceHolderSupport类图

有了以上诸多组件的支持,再加上Spring AOP基础设施的支持,Spring实现了整个事务的管理。那我们一探究竟到底怎么回事:Spring事务管理原理

附录:

  1. 顶层鸟瞰事务相关类之间关系

快速导航: