美文网首页
Spring事务实现

Spring事务实现

作者: 美美的苹果核 | 来源:发表于2021-06-24 09:29 被阅读0次

简介

  • Spring 事务处理模块是通过 AOP 功能 来实现声明式事务处理的,通过spring-tx.jar包内 TransactionProxyFactoryBean 类来使用 AOP 功能。
  • SpringBoot 的 autoconfigure 模块配置了启用事务,主要配置了 PlatformTransactionManager、TransactionTemplate 和代理方式。
  • ProxyTransactionManagementConfiguration 配置了 BeanFactoryTransactionAttributeSourceAdvisor,可作为分析源码的入口。

编程式使用

这是spring事务的最基本使用方式,声明式事务也是在这个基础上进行扩展。

TransactionManager transactionManager = new DataSourceTransactionManager();
TransactionDefiniton td = new DefaultTransactionDefinition();
// transactionManager 是某一个具体的 PlatformTransactionManager实现类 的对象
TransactionStatus ts = transactionManager.getTransaction(td);
try {
    // 这里是需要进行事务处理的方法调用
} catch (Exception e) {
    transactionManager.rollback(ts);
    throw e;
}
transactionManager.commit(ts);

TransactionManager

PlatformTransactionManager 是其中一个事务抽象,包括 DataSourceTransactionManager 等各种事务的实现,是执行事务的基本单元,并通过 TransactionSynchronizationManager 保存事务的状态。

TransactionTemplate

对外提供的api封装,具体实现还是调用TransactionManager,可配置隔离级别和传播方式,核心方法是execute方法。

TransactionSynchronizationManager

存储 TransactionManager 操作过程中的事务状态和用于扩展的 TransactionSynchronization 集合,都是静态方法,随便用。

TransactionSynchronization

TransactionSynchronizationAdapter 实现了此接口,用于扩展事务生命周期的各个操作,可以通过 TransactionSynchronizationManager 的 registerSynchronization 方法添加多个同步器。

事务后执行业务方案

注解式使用

@TransactionalEventListener

事务事件处理器 ,简化扩展

ApplicationListenerMethodTransactionalAdapter

用于监听事务内发送(如:eventPublisher.publishEvent(new StandardMessageEvent(joinPoint)))的事件,如果事件在事务内,动态创建监听器(根据 @TransactionalEventListener 配置,创建通过 TransactionSynchronization 的生命周期处理事件的监听器),否则原样将事件传递下去。

@Transactional

事务的切点,指定拦截的方法,AnnotationTransactionAttributeSource 是注解对应的解析类。

事务传播

事务传播是Spring提供的,通过 AbstractPlatformTransactionManager 的 getTransaction 实现,配置的值(隔离级别和传播方式)通过 TransactionTemplate 传递进去。

相关文章

  • Spring事务

    Spring 事务 分类 Spring可以支持编程式事务和声明式事务。 编程式事务 实现 Spring使用事务管理...

  • spring04

    Spring JdbcTemplate学习 Spring 声明式事务 xml配置实现 Spring 声明式事务 注...

  • Spring中实现事务方式

    Spring 中实现事务的方式 Spring 并不直接支持事务,只有当数据库支持事务时,Spring 才支持事务,...

  • Spring 事务实现分析

    1. Spring 事务简介 Spring 本身并不实现事务,Spring事务 的本质 还是 底层数据库 对事务的...

  • SSM spring 2

    1 Spring 事务实现方式、事务的传播机制、默认的事务类别 Spring事务的1+3种实现方式、7种传播行为、...

  • 程序员之Spring

    1. Spring事务 spring的事务实现原理Spring事务将connection放入到当前线程的threa...

  • spring事务的实现原理

    spring实现事务的原理 Spring事务 的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring...

  • Spring源码解读(三)事务

    一、spring事务简介 spring中有两种事务实现方式: 1)编程式事务使用TransactionTempla...

  • 面试问题记录(一) Day50 2019-01-09

    并发中的常用锁,乐观锁和悲观锁,实现及使用 事务的特性,原理,spring如何实现事务 spring的实现机制,I...

  • Spring声明事务原理及核心源码分析

    上一篇 << >> Spring声明事务底层实现原理 Spring事务是基于AOP环绕通知和异常通知实现的Spri...

网友评论

      本文标题:Spring事务实现

      本文链接:https://www.haomeiwen.com/subject/kipbyltx.html