Spring 事务传播机制 速记

Spring 事务传播机制,就是专门用来规定:

当一个事务方法调用另一个事务方法时,事务该如何传递和处理。

先记最核心的 7 个英文意思

1. REQUIRED

单词意思:需要的、要求的

你可以记成:

需要事务。

有事务我就加入,没有事务我就自己建一个。

所以:

REQUIRED = 需要事务,想办法进去。


2. REQUIRES_NEW

拆开看:

  • REQUIRES = 需要
  • NEW = 新的

所以就是:

需要一个新的事务。

不管外面有没有,我都要一个全新的

所以:

REQUIRES_NEW = 必须单开新事务。

记忆点很强:

看到 NEW 就想到"新开一桌"。


3. SUPPORTS

单词意思:支持、支持一下

你可以记成:

支持事务,但不强求。

有事务,我支持一下,跟着进去。

没有事务,我也能干。

所以:

SUPPORTS = 有就支持,没有也行。


4. MANDATORY

单词意思:强制的、必须的

这个很好记:

必须有事务。

没有事务就报错。

所以:

MANDATORY = 强制要求必须在事务里。

你可以联想 mandatory attendance

就是"强制出席"。


5. NOT_SUPPORTED

拆开看:

  • NOT = 不
  • SUPPORTED = 支持

意思就是:

不支持事务。

如果外面有事务,先挂起;

我自己按非事务方式执行。

所以:

NOT_SUPPORTED = 我不参与事务。


6. NEVER

单词意思:绝不、从不

这个更狠:

绝对不能有事务。

如果当前有事务,直接报错。

所以:

NEVER = 看到事务我就报错。


7. NESTED

单词意思:嵌套的

你可以立刻联想到:

大事务里套一个小事务。

所以:

NESTED = 嵌套事务。


用英文本义串起来记

你直接按下面这组背:

  • REQUIRED:需要事务
  • REQUIRES_NEW:需要一个新的事务
  • SUPPORTS:支持事务,但不强求
  • MANDATORY:强制必须有事务
  • NOT_SUPPORTED:不支持事务
  • NEVER:绝对不能有事务
  • NESTED:嵌套事务

再给你分组记忆

A 组:想进事务的

REQUIRED

需要事务,没事务就建一个

REQUIRES_NEW

需要一个新的事务

SUPPORTS

支持事务,有就进,没有也行

这三个最常用。


B 组:态度很强硬的

MANDATORY

必须有事务

NEVER

绝对不能有事务

这两个是一对反义词,很好记:

  • MANDATORY:必须有
  • NEVER:绝不能有

C 组:不想参与事务的

NOT_SUPPORTED

不支持事务,外面有事务也先挂起


D 组:套娃型

NESTED

嵌套事务


最好背的一版口诀

你可以直接背这个:

Required 是"需要事务";
Requires New 是"需要新事务";
Supports 是"支持事务";
Mandatory 是"强制必须有事务";
Not Supported 是"不支持事务";
Never 是"绝不能有事务";
Nested 是"嵌套事务"。


面试时怎么说

Spring 事务传播机制里,英文其实就很好记。
REQUIRED 是需要事务,所以有就加入,没有就新建;
REQUIRES_NEW 是需要一个新的事务,所以不管外面有没有都单独开一个;
SUPPORTS 是支持事务,所以有就加入,没有也能执行;
MANDATORY 是强制的,表示必须在事务里;
NOT_SUPPORTED 是不支持事务,表示要以非事务方式执行;
NEVER 是绝不能有事务,有事务就报错;
NESTED 就是嵌套事务。


超短背诵版

REQUIRED:需要事务

REQUIRES_NEW:需要新事务

SUPPORTS:支持事务

MANDATORY:必须有事务

NOT_SUPPORTED:不支持事务

NEVER:绝不能有事务

NESTED:嵌套事务

相关推荐
瞬间&永恒~7 小时前
【MySQL】 InnoDB 锁等待排查与并发压测实验
运维·数据库·mysql
布鲁飞丝7 小时前
对 .NET线程 异常退出引发程序崩溃的反思
数据库·c#·.net
zcmodeltech7 小时前
智能矿井沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的感知-传输-控制一体化方案
服务器·数据库·分布式·stm32·单片机·嵌入式硬件
流星白龙7 小时前
【Docker】4.NameSpace空间隔离实战
java·运维·docker
AI人工智能+电脑小能手7 小时前
【大白话说Java面试题 第207题】【09_Zookeeper篇】第8题:谈谈 ZooKeeper 的可靠性保障机制
java·zookeeper·高可用·可靠性·分布式系统
harmful_sheep7 小时前
maven多版本包导致java.lang.NoClassDefFoundError
java·maven
Mark_ZP8 小时前
【锁2】锁的分类与概念
java·
江晓鱼未暖8 小时前
十七、Redis 核心原理与架构详解
大数据·数据库·数据仓库·redis·缓存·架构
copyer_xyf8 小时前
PostgreSQL 做向量检索:一条单库路线
数据库·agent·nestjs
caishenzhibiao8 小时前
顺势捕猎者副图 同花顺期货通指标
java·c语言·c#