From 84ae035493fbec9dec32a0d7a86ba49d33959190 Mon Sep 17 00:00:00 2001 From: guide Date: Sun, 13 Mar 2022 10:06:18 +0800 Subject: [PATCH] =?UTF-8?q?[docs=20update]spring=E4=BA=8B=E5=8A=A1?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ee1.png => PlatformTransactionManager.png} | Bin .../a616b84d-9eea-4ad1-b4fc-461ff05e951d.png | Bin 22540 -> 0 bytes .../bda7231b-ab05-4e23-95ee-89ac90ac7fcf.png | Bin 17123 -> 0 bytes ...84b3-7f838c7379d1.png => roollbackFor.png} | Bin .../spring-transaction/接口使用原因.png | Bin 82893 -> 0 bytes .../framework/spring/spring-transaction.md | 224 +++++++++--------- 6 files changed, 112 insertions(+), 112 deletions(-) rename docs/system-design/framework/spring/images/spring-transaction/{ae964c2c-7289-441c-bddd-511161f51ee1.png => PlatformTransactionManager.png} (100%) delete mode 100644 docs/system-design/framework/spring/images/spring-transaction/a616b84d-9eea-4ad1-b4fc-461ff05e951d.png delete mode 100644 docs/system-design/framework/spring/images/spring-transaction/bda7231b-ab05-4e23-95ee-89ac90ac7fcf.png rename docs/system-design/framework/spring/images/spring-transaction/{f6c6f0aa-0f26-49e1-84b3-7f838c7379d1.png => roollbackFor.png} (100%) delete mode 100644 docs/system-design/framework/spring/images/spring-transaction/接口使用原因.png diff --git a/docs/system-design/framework/spring/images/spring-transaction/ae964c2c-7289-441c-bddd-511161f51ee1.png b/docs/system-design/framework/spring/images/spring-transaction/PlatformTransactionManager.png similarity index 100% rename from docs/system-design/framework/spring/images/spring-transaction/ae964c2c-7289-441c-bddd-511161f51ee1.png rename to docs/system-design/framework/spring/images/spring-transaction/PlatformTransactionManager.png diff --git a/docs/system-design/framework/spring/images/spring-transaction/a616b84d-9eea-4ad1-b4fc-461ff05e951d.png b/docs/system-design/framework/spring/images/spring-transaction/a616b84d-9eea-4ad1-b4fc-461ff05e951d.png deleted file mode 100644 index d4f3f0274ec80d06c43e32a6ea5caafe38123105..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22540 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 diff --git a/docs/system-design/framework/spring/spring-transaction.md b/docs/system-design/framework/spring/spring-transaction.md index d30269d3..d85cc992 100644 --- a/docs/system-design/framework/spring/spring-transaction.md +++ b/docs/system-design/framework/spring/spring-transaction.md @@ -5,15 +5,13 @@ tag: - Spring --- -大家好,我是 Guide 哥,前段时间答应读者的 **Spring 事务**分析总结终于来了。这部分内容比较重要,不论是对于工作还是面试,但是网上比较好的参考资料比较少。 +前段时间答应读者的 **Spring 事务** 分析总结终于来了。这部分内容比较重要,不论是对于工作还是面试,但是网上比较好的参考资料比较少。 -如果本文有任何不对或者需要完善的地方,请帮忙指出!Guide 哥感激不尽! - -## 1. 什么是事务? +## 什么是事务? **事务是逻辑上的一组操作,要么都执行,要么都不执行。** -_Guide 哥:大家应该都能背上面这句话了,下面我结合我们日常的真实开发来谈一谈。_ +相信大家应该都能背上面这句话了,下面我结合我们日常的真实开发来谈一谈。 我们系统的每个业务方法可能包括了多个原子性的数据库操作,比如下面的 `savePerson()` 方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的,它们要么都执行,要不就都不执行。 @@ -24,13 +22,12 @@ _Guide 哥:大家应该都能背上面这句话了,下面我结合我们日 } ``` -另外,需要格外注意的是:**事务能否生效数据库引擎是否支持事务是关键。比如常用的 MySQL 数据库默认使用支持事务的`innodb`引擎。但是,如果把数据库引擎变为 `myisam`,那么程序也就不再支持事务了!** +另外,需要格外注意的是:**事务能否生效数据库引擎是否支持事务是关键。比如常用的 MySQL 数据库默认使用支持事务的 `innodb`引擎。但是,如果把数据库引擎变为 `myisam`,那么程序也就不再支持事务了!** 事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账 1000 元,这个转账会涉及到两个关键操作就是: -1. 将小明的余额减少 1000 元 - -2. 将小红的余额增加 1000 元。 +> 1. 将小明的余额减少 1000 元。 +> 2. 将小红的余额增加 1000 元。 万一在这两个操作之间突然出现错误比如银行系统崩溃或者网络故障,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。 @@ -58,9 +55,7 @@ public class OrdersService { 另外,数据库事务的 ACID 四大特性是事务的基础,下面简单来了解一下。 -## 2. 事务的特性(ACID)了解么? - -![](./images/spring-transaction/bda7231b-ab05-4e23-95ee-89ac90ac7fcf.png) +## 事务的特性(ACID)了解么? - **原子性(Atomicity):** 一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割、不可约简。 - **一致性(Consistency):** 在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设约束、触发器、级联回滚等。 @@ -69,17 +64,17 @@ public class OrdersService { 参考 :[https://zh.wikipedia.org/wiki/ACID](https://zh.wikipedia.org/wiki/ACID) 。 -## 3. 详谈 Spring 对事务的支持 +## 详谈 Spring 对事务的支持 -**再提醒一次:你的程序是否支持事务首先取决于数据库 ,比如使用 MySQL 的话,如果你选择的是 innodb 引擎,那么恭喜你,是可以支持事务的。但是,如果你的 MySQL 数据库使用的是 myisam 引擎的话,那不好意思,从根上就是不支持事务的。** +> ⚠️ 再提醒一次:你的程序是否支持事务首先取决于数据库 ,比如使用 MySQL 的话,如果你选择的是 innodb 引擎,那么恭喜你,是可以支持事务的。但是,如果你的 MySQL 数据库使用的是 myisam 引擎的话,那不好意思,从根上就是不支持事务的。 这里再多提一下一个非常重要的知识点: **MySQL 怎么保证原子性的?** 我们知道如果想要保证事务的原子性,就需要在异常发生时,对已经执行的操作进行**回滚**,在 MySQL 中,恢复机制是通过 **回滚日志(undo log)** 实现的,所有事务进行的修改都会先先记录到这个回滚日志中,然后再执行相关的操作。如果执行过程中遇到异常的话,我们直接利用 **回滚日志** 中的信息将数据回滚到修改之前的样子即可!并且,回滚日志会先于数据持久化到磁盘上。这样就保证了即使遇到数据库突然宕机等情况,当用户再次启动数据库的时候,数据库还能够通过查询回滚日志来回滚将之前未完成的事务。 -### 3.1. Spring 支持两种方式的事务管理 +### Spring 支持两种方式的事务管理 -#### 1).编程式事务管理 +#### 编程式事务管理 通过 `TransactionTemplate`或者`TransactionManager`手动管理事务,实际应用中很少使用,但是对于你理解 Spring 事务管理原理有帮助。 @@ -125,7 +120,7 @@ public void testTransaction() { } ``` -#### 2)声明式事务管理 +#### 声明式事务管理 推荐使用(代码侵入性最小),实际是通过 AOP 实现(基于`@Transactional` 的全注解方式使用最多)。 @@ -142,7 +137,7 @@ public void aMethod { } ``` -### 3.2. Spring 事务管理接口介绍 +### Spring 事务管理接口介绍 Spring 框架中,事务管理相关最重要的 3 个接口如下: @@ -154,7 +149,7 @@ Spring 框架中,事务管理相关最重要的 3 个接口如下: **`PlatformTransactionManager`** 会根据 **`TransactionDefinition`** 的定义比如事务超时时间、隔离级别、传播行为等来进行事务管理 ,而 **`TransactionStatus`** 接口则提供了一些方法来获取事务相应的状态比如是否新事务、是否可以回滚等等。 -#### 3.2.1. PlatformTransactionManager:事务管理接口 +#### PlatformTransactionManager:事务管理接口 **Spring 并不直接管理事务,而是提供了多种事务管理器** 。Spring 事务管理器的接口是: **`PlatformTransactionManager`** 。 @@ -162,7 +157,7 @@ Spring 框架中,事务管理相关最重要的 3 个接口如下: **`PlatformTransactionManager` 接口的具体实现如下:** -![](./images/spring-transaction/ae964c2c-7289-441c-bddd-511161f51ee1.png) +![](./images/spring-transaction/PlatformTransactionManager.png) `PlatformTransactionManager`接口中定义了三个方法: @@ -184,21 +179,36 @@ public interface PlatformTransactionManager { **这里多插一嘴。为什么要定义或者说抽象出来`PlatformTransactionManager`这个接口呢?** -主要是因为要将事务管理行为抽象出来,然后不同的平台去实现它,这样我们可以保证提供给外部的行为不变,方便我们扩展。我前段时间分享过:**“为什么我们要用接口?”** +主要是因为要将事务管理行为抽象出来,然后不同的平台去实现它,这样我们可以保证提供给外部的行为不变,方便我们扩展。 -![](./images/spring-transaction/接口使用原因.png) +我前段时间在我的[知识星球](https://www.yuque.com/snailclimb/rpkqw1/pvak2w)分享过:**“为什么我们要用接口?”** 。 -#### 3.2.2. TransactionDefinition:事务属性 +> 《设计模式》(GOF 那本)这本书在很多年前都提到过说要基于接口而非实现编程,你真的知道为什么要基于接口编程么? +> +> 纵观开源框架和项目的源码,接口是它们不可或缺的重要组成部分。要理解为什么要用接口,首先要搞懂接口提供了什么功能。我们可以把接口理解为提供了一系列功能列表的约定,接口本身不提供功能,它只定义行为。但是谁要用,就要先实现我,遵守我的约定,然后再自己去实现我定义的要实现的功能。 +> +> 举个例子,我上个项目有发送短信的需求,为此,我们定了一个接口,接口只有两个方法: +> +> 1.发送短信 +> 2.处理发送结果的方法。 +> +> 刚开始我们用的是阿里云短信服务,然后我们实现这个接口完成了一个阿里云短信的服务。后来,我们突然又换到了别的短信服务平台,我们这个时候只需要再实现这个接口即可。这样保证了我们提供给外部的行为不变。几乎不需要改变什么代码,我们就轻松完成了需求的转变,提高了代码的灵活性和可扩展性。 +> +> 什么时候用接口?当你要实现的功能模块设计抽象行为的时候,比如发送短信的服务,图床的存储服务等等。 + +#### TransactionDefinition:事务属性 事务管理器接口 **`PlatformTransactionManager`** 通过 **`getTransaction(TransactionDefinition definition)`** 方法来得到一个事务,这个方法里面的参数是 **`TransactionDefinition`** 类 ,这个类就定义了一些基本的事务属性。 -那么什么是 **事务属性** 呢? - -事务属性可以理解成事务的一些基本配置,描述了事务策略如何应用到方法上。 +**什么是事务属性呢?** 事务属性可以理解成事务的一些基本配置,描述了事务策略如何应用到方法上。 事务属性包含了 5 个方面: -![](./images/spring-transaction/a616b84d-9eea-4ad1-b4fc-461ff05e951d.png) +- 隔离级别 +- 传播行为 +- 回滚规则 +- 是否只读 +- 事务超时 `TransactionDefinition` 接口中定义了 5 个方法以及一些表示事务属性的常量比如隔离级别、传播行为等等。 @@ -235,7 +245,7 @@ public interface TransactionDefinition { } ``` -#### 3.2.3. TransactionStatus:事务状态 +#### TransactionStatus:事务状态 `TransactionStatus`接口用来记录事务的状态 该接口定义了一组方法,用来获取或判断事务的相应状态信息。 @@ -253,19 +263,17 @@ public interface TransactionStatus{ } ``` -### 3.3. 事务属性详解 +### 事务属性详解 -_实际业务开发中,大家一般都是使用 `@Transactional` 注解来开启事务,很多人并不清楚这个参数里面的参数是什么意思,有什么用。为了更好的在项目中使用事务管理,强烈推荐好好阅读一下下面的内容。_ +际业务开发中,大家一般都是使用 `@Transactional` 注解来开启事务,很多人并不清楚这个参数里面的参数是什么意思,有什么用。为了更好的在项目中使用事务管理,强烈推荐好好阅读一下下面的内容。 -#### 3.3.1. 事务传播行为 +#### 事务传播行为 **事务传播行为是为了解决业务层方法之间互相调用的事务问题**。 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。 -**举个例子!** - -我们在 A 类的`aMethod()`方法中调用了 B 类的 `bMethod()` 方法。这个时候就涉及到业务层方法之间互相调用的事务问题。如果我们的 `bMethod()`如果发生异常需要回滚,如何配置事务传播行为才能让 `aMethod()`也跟着回滚呢?这个时候就需要事务传播行为的知识了,如果你不知道的话一定要好好看一下。 +举个例子:我们在 A 类的`aMethod()`方法中调用了 B 类的 `bMethod()` 方法。这个时候就涉及到业务层方法之间互相调用的事务问题。如果我们的 `bMethod()`如果发生异常需要回滚,如何配置事务传播行为才能让 `aMethod()`也跟着回滚呢?这个时候就需要事务传播行为的知识了,如果你不知道的话一定要好好看一下。 ```java Class A { @@ -309,30 +317,29 @@ import org.springframework.transaction.TransactionDefinition; public enum Propagation { - REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED), + REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED), - SUPPORTS(TransactionDefinition.PROPAGATION_SUPPORTS), + SUPPORTS(TransactionDefinition.PROPAGATION_SUPPORTS), - MANDATORY(TransactionDefinition.PROPAGATION_MANDATORY), + MANDATORY(TransactionDefinition.PROPAGATION_MANDATORY), - REQUIRES_NEW(TransactionDefinition.PROPAGATION_REQUIRES_NEW), + REQUIRES_NEW(TransactionDefinition.PROPAGATION_REQUIRES_NEW), - NOT_SUPPORTED(TransactionDefinition.PROPAGATION_NOT_SUPPORTED), + NOT_SUPPORTED(TransactionDefinition.PROPAGATION_NOT_SUPPORTED), - NEVER(TransactionDefinition.PROPAGATION_NEVER), + NEVER(TransactionDefinition.PROPAGATION_NEVER), - NESTED(TransactionDefinition.PROPAGATION_NESTED); + NESTED(TransactionDefinition.PROPAGATION_NESTED); + private final int value; - private final int value; + Propagation(int value) { + this.value = value; + } - Propagation(int value) { - this.value = value; - } - - public int value() { - return this.value; - } + public int value() { + return this.value; + } } @@ -344,8 +351,8 @@ public enum Propagation { 使用的最多的一个事务传播行为,我们平时经常使用的`@Transactional`注解默认使用就是这个事务传播行为。如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。也就是说: -1. 如果外部方法没有开启事务的话,`Propagation.REQUIRED`修饰的内部方法会新开启自己的事务,且开启的事务相互独立,互不干扰。 -2. 如果外部方法开启事务并且被`Propagation.REQUIRED`的话,所有`Propagation.REQUIRED`修饰的内部方法和外部方法均属于同一事务 ,只要一个方法回滚,整个事务均回滚。 +- 如果外部方法没有开启事务的话,`Propagation.REQUIRED`修饰的内部方法会新开启自己的事务,且开启的事务相互独立,互不干扰。 +- 如果外部方法开启事务并且被`Propagation.REQUIRED`的话,所有`Propagation.REQUIRED`修饰的内部方法和外部方法均属于同一事务 ,只要一个方法回滚,整个事务均回滚。 举个例子:如果我们上面的`aMethod()`和`bMethod()`使用的都是`PROPAGATION_REQUIRED`传播行为的话,两者使用的就是同一个事务,只要其中一个方法回滚,整个事务均回滚。 @@ -395,11 +402,10 @@ Class B { 如果当前存在事务,就在嵌套事务内执行;如果当前没有事务,就执行与`TransactionDefinition.PROPAGATION_REQUIRED`类似的操作。也就是说: -1. 在外部方法开启事务的情况下,在内部开启一个新的事务,作为嵌套事务存在。 -2. 如果外部方法无事务,则单独开启一个事务与 PROPAGATION_REQUIRED 类似 -这里还是简单举个例子: +- 在外部方法开启事务的情况下,在内部开启一个新的事务,作为嵌套事务存在。 +- 如果外部方法无事务,则单独开启一个事务,与 `PROPAGATION_REQUIRED` 类似。 -如果 `bMethod()` 回滚的话,`aMethod()`也会回滚。 +这里还是简单举个例子:如果 `bMethod()` 回滚的话,`aMethod()`也会回滚。 ```java Class A { @@ -433,7 +439,7 @@ Class B { 更多关于事务传播行为的内容请看这篇文章:[《太难了~面试官让我结合案例讲讲自己对 Spring 事务传播行为的理解。》](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247486668&idx=2&sn=0381e8c836442f46bdc5367170234abb&chksm=cea24307f9d5ca11c96943b3ccfa1fc70dc97dd87d9c540388581f8fe6d805ff548dff5f6b5b&token=1776990505&lang=zh_CN#rd) -#### 3.3.2 事务隔离级别 +#### 事务隔离级别 `TransactionDefinition` 接口中定义了五个表示隔离级别的常量: @@ -454,25 +460,25 @@ public interface TransactionDefinition { ```java public enum Isolation { - DEFAULT(TransactionDefinition.ISOLATION_DEFAULT), + DEFAULT(TransactionDefinition.ISOLATION_DEFAULT), - READ_UNCOMMITTED(TransactionDefinition.ISOLATION_READ_UNCOMMITTED), + READ_UNCOMMITTED(TransactionDefinition.ISOLATION_READ_UNCOMMITTED), - READ_COMMITTED(TransactionDefinition.ISOLATION_READ_COMMITTED), + READ_COMMITTED(TransactionDefinition.ISOLATION_READ_COMMITTED), - REPEATABLE_READ(TransactionDefinition.ISOLATION_REPEATABLE_READ), + REPEATABLE_READ(TransactionDefinition.ISOLATION_REPEATABLE_READ), - SERIALIZABLE(TransactionDefinition.ISOLATION_SERIALIZABLE); + SERIALIZABLE(TransactionDefinition.ISOLATION_SERIALIZABLE); - private final int value; + private final int value; - Isolation(int value) { - this.value = value; - } + Isolation(int value) { + this.value = value; + } - public int value() { - return this.value; - } + public int value() { + return this.value; + } } ``` @@ -498,23 +504,23 @@ mysql> SELECT @@tx_isolation; +-----------------+ ``` -~~这里需要注意的是:与 SQL 标准不同的地方在于 InnoDB 存储引擎在 **REPEATABLE-READ(可重读)** 事务隔离级别下使用的是Next-Key Lock 锁算法,因此可以避免幻读的产生,这与其他数据库系统(如 SQL Server)是不同的。所以说InnoDB 存储引擎的默认支持的隔离级别是 **REPEATABLE-READ(可重读)** 已经可以完全保证事务的隔离性要求,即达到了 SQL标准的 **SERIALIZABLE(可串行化)** 隔离级别。~~ +~~这里需要注意的是:与 SQL 标准不同的地方在于 InnoDB 存储引擎在 **REPEATABLE-READ(可重读)** 事务隔离级别下使用的是 Next-Key Lock 锁算法,因此可以避免幻读的产生,这与其他数据库系统(如 SQL Server)是不同的。所以说 InnoDB 存储引擎的默认支持的隔离级别是 **REPEATABLE-READ(可重读)** 已经可以完全保证事务的隔离性要求,即达到了 SQL 标准的 **SERIALIZABLE(可串行化)** 隔离级别。~~ -🐛问题更正:**MySQL InnoDB的REPEATABLE-READ(可重读)并不保证避免幻读,需要应用使用加锁读来保证。而这个加锁读使用到的机制就是 Next-Key Locks。** +🐛 问题更正:**MySQL InnoDB 的 REPEATABLE-READ(可重读)并不保证避免幻读,需要应用使用加锁读来保证。而这个加锁读使用到的机制就是 Next-Key Locks。** -因为隔离级别越低,事务请求的锁越少,所以大部分数据库系统的隔离级别都是 **READ-COMMITTED(读取提交内容)** ,但是你要知道的是InnoDB 存储引擎默认使用 **REPEAaTABLE-READ(可重读)** 并不会有任何性能损失。 +因为隔离级别越低,事务请求的锁越少,所以大部分数据库系统的隔离级别都是 **READ-COMMITTED(读取提交内容)** ,但是你要知道的是 InnoDB 存储引擎默认使用 **REPEAaTABLE-READ(可重读)** 并不会有任何性能损失。 InnoDB 存储引擎在 **分布式事务** 的情况下一般会用到 **SERIALIZABLE(可串行化)** 隔离级别。 -🌈拓展一下(以下内容摘自《MySQL技术内幕:InnoDB存储引擎(第2版)》7.7章): +🌈 拓展一下(以下内容摘自《MySQL 技术内幕:InnoDB 存储引擎(第 2 版)》7.7 章): -> InnoDB存储引擎提供了对XA事务的支持,并通过XA事务来支持分布式事务的实现。分布式事务指的是允许多个独立的事务资源(transactional resources)参与到一个全局的事务中。事务资源通常是关系型数据库系统,但也可以是其他类型的资源。全局事务要求在其中的所有参与的事务要么都提交,要么都回滚,这对于事务原有的ACID要求又有了提高。另外,在使用分布式事务时,InnoDB存储引擎的事务隔离级别必须设置为SERIALIZABLE。 +> InnoDB 存储引擎提供了对 XA 事务的支持,并通过 XA 事务来支持分布式事务的实现。分布式事务指的是允许多个独立的事务资源(transactional resources)参与到一个全局的事务中。事务资源通常是关系型数据库系统,但也可以是其他类型的资源。全局事务要求在其中的所有参与的事务要么都提交,要么都回滚,这对于事务原有的 ACID 要求又有了提高。另外,在使用分布式事务时,InnoDB 存储引擎的事务隔离级别必须设置为 SERIALIZABLE。 -#### 3.3.3. 事务超时属性 +#### 事务超时属性 所谓事务超时,就是指一个事务所允许执行的最长时间,如果超过该时间限制但事务还没有完成,则自动回滚事务。在 `TransactionDefinition` 中以 int 的值来表示超时时间,其单位是秒,默认值为-1。 -#### 3.3.4. 事务只读属性 +#### 事务只读属性 ```java package org.springframework.transaction; @@ -543,14 +549,14 @@ public interface TransactionDefinition { 分享一下关于事务只读属性,其他人的解答: -1. 如果你一次执行单条查询语句,则没有必要启用事务支持,数据库默认支持 SQL 执行期间的读一致性; -2. 如果你一次执行多条查询语句,例如统计查询,报表查询,在这种场景下,多条查询 SQL 必须保证整体的读一致性,否则,在前条 SQL 查询之后,后条 SQL 查询之前,数据被其他用户改变,则该次整体的统计查询将会出现读数据不一致的状态,此时,应该启用事务支持 +- 如果你一次执行单条查询语句,则没有必要启用事务支持,数据库默认支持 SQL 执行期间的读一致性; +- 如果你一次执行多条查询语句,例如统计查询,报表查询,在这种场景下,多条查询 SQL 必须保证整体的读一致性,否则,在前条 SQL 查询之后,后条 SQL 查询之前,数据被其他用户改变,则该次整体的统计查询将会出现读数据不一致的状态,此时,应该启用事务支持 -#### 3.3.5. 事务回滚规则 +#### 事务回滚规则 -这些规则定义了哪些异常会导致事务回滚而哪些不会。默认情况下,事务只有遇到运行期异常(RuntimeException 的子类)时才会回滚,Error 也会导致事务回滚,但是,在遇到检查型(Checked)异常时不会回滚。 +这些规则定义了哪些异常会导致事务回滚而哪些不会。默认情况下,事务只有遇到运行期异常(`RuntimeException` 的子类)时才会回滚,`Error` 也会导致事务回滚,但是,在遇到检查型(Checked)异常时不会回滚。 -![](./images/spring-transaction/f6c6f0aa-0f26-49e1-84b3-7f838c7379d1.png) +![](./images/spring-transaction/roollbackFor.png) 如果你想要回滚你定义的特定的异常类型的话,可以这样: @@ -558,15 +564,15 @@ public interface TransactionDefinition { @Transactional(rollbackFor= MyException.class) ``` -### 3.4. @Transactional 注解使用详解 +### @Transactional 注解使用详解 -#### 1) `@Transactional` 的作用范围 +#### `@Transactional` 的作用范围 1. **方法** :推荐将注解使用于方法上,不过需要注意的是:**该注解只能应用到 public 方法上,否则不生效。** 2. **类** :如果这个注解使用在类上的话,表明该注解对该类中所有的 public 方法都生效。 3. **接口** :不推荐在接口上使用。 -#### 2) `@Transactional` 的常用配置参数 +#### `@Transactional` 的常用配置参数 `@Transactional`注解源码如下,里面包含了基本事务属性的配置: @@ -604,15 +610,15 @@ public @interface Transactional { **`@Transactional` 的常用配置参数总结(只列出了 5 个我平时比较常用的):** -| 属性名 | 说明 | -| :---------- | :------------------------------------------------------------------------------------------- | -| propagation | 事务的传播行为,默认值为 REQUIRED,可选的值在上面介绍过 | -| isolation | 事务的隔离级别,默认值采用 DEFAULT,可选的值在上面介绍过 | +| 属性名 | 说明 | +| :---------- | :----------------------------------------------------------- | +| propagation | 事务的传播行为,默认值为 REQUIRED,可选的值在上面介绍过 | +| isolation | 事务的隔离级别,默认值采用 DEFAULT,可选的值在上面介绍过 | | timeout | 事务的超时时间,默认值为-1(不会超时)。如果超过该时间限制但事务还没有完成,则自动回滚事务。 | -| readOnly | 指定事务是否为只读事务,默认值为 false。 | -| rollbackFor | 用于指定能够触发事务回滚的异常类型,并且可以指定多个异常类型。 | +| readOnly | 指定事务是否为只读事务,默认值为 false。 | +| rollbackFor | 用于指定能够触发事务回滚的异常类型,并且可以指定多个异常类型。 | -#### 3)`@Transactional` 事务注解原理 +#### `@Transactional` 事务注解原理 面试中在问 AOP 的时候可能会被问到的一个问题。简单说下吧! @@ -648,7 +654,7 @@ public class DefaultAopProxyFactory implements AopProxyFactory, Serializable { > `TransactionInterceptor` 类中的 `invoke()`方法内部实际调用的是 `TransactionAspectSupport` 类的 `invokeWithinTransaction()`方法。由于新版本的 Spring 对这部分重写很大,而且用到了很多响应式编程的知识,这里就不列源码了。 -#### 4) Spring AOP 自调用问题 +#### Spring AOP 自调用问题 若同一类中的其他没有 `@Transactional` 注解的方法内部调用有 `@Transactional` 注解的方法,有`@Transactional` 注解的方法的事务会失效。 @@ -673,28 +679,22 @@ private void method1() { 解决办法就是避免同一类中自调用或者使用 AspectJ 取代 Spring AOP 代理。 -#### 5) `@Transactional` 的使用注意事项总结 +#### `@Transactional` 的使用注意事项总结 -1. `@Transactional` 注解只有作用到 public 方法上事务才生效,不推荐在接口上使用; -2. 避免同一个类中调用 `@Transactional` 注解的方法,这样会导致事务失效; -3. 正确的设置 `@Transactional` 的 `rollbackFor` 和 `propagation` 属性,否则事务可能会回滚失败; -3. 被 `@Transactional` 注解的方法所在的类必须被 Spring 管理,否则不生效; -3. 底层使用的数据库必须支持事务机制,否则不生效; -4. ...... +- `@Transactional` 注解只有作用到 public 方法上事务才生效,不推荐在接口上使用; +- 避免同一个类中调用 `@Transactional` 注解的方法,这样会导致事务失效; +- 正确的设置 `@Transactional` 的 `rollbackFor` 和 `propagation` 属性,否则事务可能会回滚失败; +- 被 `@Transactional` 注解的方法所在的类必须被 Spring 管理,否则不生效; +- 底层使用的数据库必须支持事务机制,否则不生效; +- ...... -## 4. Reference +## 参考 -1. [总结]Spring 事务管理中@Transactional 的参数:[http://www.mobabel.net/spring 事务管理中 transactional 的参数/](http://www.mobabel.net/spring事务管理中transactional的参数/) - -2. Spring 官方文档:[https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/transaction.html](https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/transaction.html) - -3. 《Spring5 高级编程》 - -4. 透彻的掌握 Spring 中@transactional 的使用: [https://www.ibm.com/developerworks/cn/java/j-master-spring-transactional-use/index.html](https://www.ibm.com/developerworks/cn/java/j-master-spring-transactional-use/index.html) - -5. Spring 事务的传播特性:[https://github.com/love-somnus/Spring/wiki/Spring 事务的传播特性](https://github.com/love-somnus/Spring/wiki/Spring事务的传播特性) - -6. [Spring 事务传播行为详解](https://segmentfault.com/a/1190000013341344) :[https://segmentfault.com/a/1190000013341344](https://segmentfault.com/a/1190000013341344) - -7. 全面分析 Spring 的编程式事务管理及声明式事务管理:[https://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/index.html](https://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/index.html) +- [总结]Spring 事务管理中@Transactional 的参数:[http://www.mobabel.net/spring 事务管理中 transactional 的参数/](http://www.mobabel.net/spring事务管理中transactional的参数/) +- Spring 官方文档:[https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/transaction.html](https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/transaction.html) +- 《Spring5 高级编程》 +- 透彻的掌握 Spring 中@transactional 的使用: [https://www.ibm.com/developerworks/cn/java/j-master-spring-transactional-use/index.html](https://www.ibm.com/developerworks/cn/java/j-master-spring-transactional-use/index.html) +- Spring 事务的传播特性:[https://github.com/love-somnus/Spring/wiki/Spring 事务的传播特性](https://github.com/love-somnus/Spring/wiki/Spring事务的传播特性) +- [Spring 事务传播行为详解](https://segmentfault.com/a/1190000013341344) :[https://segmentfault.com/a/1190000013341344](https://segmentfault.com/a/1190000013341344) +- 全面分析 Spring 的编程式事务管理及声明式事务管理:[https://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/index.html](https://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/index.html)