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:嵌套事务

相关推荐
charlotte102410243 分钟前
Redis 简介:从诞生到数据类型,再到缓存三大问题
数据库·redis·缓存
Wang's Blog4 分钟前
Java 项目实战: 交友项目 - 今日佳人:需求分析
java·开发语言·交友
ClouGence13 分钟前
还在用命令行管理 Kafka?开源 CloudDM 让操作更简单
数据库·kafka·开源
余额瞒着我当琳21 分钟前
C++11,发展历史浅谈,初始化列表和对象初始化,右值引用和移动语义
java·开发语言·c++·算法
曹牧27 分钟前
Java:`tools.jar`
java·开发语言·jar
IT枫斗者枫哥28 分钟前
Spring AI文档更新后仍命中旧内容:核对分片ID、来源和版本
java·人工智能
aibo86030836 分钟前
基于 Spring Boot + Vue3 的爱心众筹管理系统设计与实现
java·spring boot·后端
SimonKing37 分钟前
OpenCode免费模型直接给`Workbuddy`用,一键导入
java·后端·程序员
Tsuki_tl38 分钟前
【优选算法:双指针】——复写零题解
java·c++·算法·leetcode·数组·双指针·复写零