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

相关推荐
冬奇Lab1 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
用户3521802454751 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
东坡白菜1 天前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫1 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq1 天前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java
ClouGence2 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
plainGeekDev2 天前
null 判断 → Kotlin 可空类型
android·java·kotlin
糖拌西瓜皮2 天前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js
plainGeekDev2 天前
getter/setter → Kotlin 属性
android·java·kotlin
一线大码2 天前
Smart-Doc 的简单使用
java·后端·restful