Spring事务剖析-TransactionInterceptor

本文探讨Spring-tx包的事务支持,通过AOP拦截声明了事务的方法,重点解析TransactionInterceptor的工作原理,包括核心代码、事务获取、异常处理和事务提交等关键环节。
摘要由CSDN通过智能技术生成

Spring事务剖析

Spring-tx包提供了事务支持。实现原理是利用aop机制,对申明事务的方法(方法上有@Transactional注解)进行拦截,从而实现事务机制。本文不对spring事务使用进行深入分析,而是侧重分析其实现原理。

1. 结构介绍

1.1 事务方法拦截器TransactionInterceptor

org.springframework.transaction.interceptor.TransactionInterceptor

TransactionInterceptor实现了MethodInterceptor,用于拦截申明了事务的方法。其重要结构如下:

在这里插入图片描述

TransactionInterceptor有两个重要的属性

  1. TransactionManager transactionManagerTransactionManager接口本身没有提供任何方法。但在TransactionInterceptor实现中,transactionManager需要实现接口PlatformTransactionManager, 用于获取、提交和回滚事务。
  2. TransactionAttributeSource transactionAttributeSource,用于从被拦截的方法上提取事务的信息
1.1.1 核心代码

invoke方法的核心逻辑

@Nullable
protected Object invokeWithinTransaction(Method method, @Nullable Class<?> targetClass,
                                         final InvocationCallback invocation) throws Throwable {
   
    // If the transaction attribute is null, the method is non-transactional.
    TransactionAttributeSource tas = getTransactionAttributeSource();
    // 从方法上提取事务信息
    final TransactionAttribute txAttr = (tas != null ? tas.getTransactionAttribute(method
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值