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

相关推荐
雷工笔记1 小时前
MES 系统 设备保养管理模块详细设计方案
运维·数据库
晚风_END3 小时前
Linux|操作系统|zfs文件系统的使用详解
linux·运维·服务器·数据库·postgresql·性能优化·宽度优先
AI进化营-智能译站5 小时前
ROS2 C++开发系列17-多线程驱动多传感器|chrono高精度计时实现机器人同步控制
java·c++·ai·机器人
qq_589568108 小时前
springbootweb案例,出现访问 http://localhost:8080/list 一直处于浏览器运转阶段
java·网络协议·http·list·springboot
JAVA面经实录9178 小时前
计算机基础(完整版·超详细可背诵)
java·linux·数据结构·算法
晚风_END9 小时前
Linux|操作系统|最新版openzfs编译记录
linux·运维·服务器·数据库·spring·中间件·个人开发
AC赳赳老秦9 小时前
知识产权辅助:用 OpenClaw 批量生成专利交底书 / 软著申请材料,自动校验格式与内容合规性
java·人工智能·python·算法·elasticsearch·deepseek·openclaw
dLYG DUMS9 小时前
DBeaver连接本地MySQL、创建数据库表的基础操作
数据库·mysql
FYKJ_20109 小时前
springboot校园兼职平台--附源码02041
java·javascript·spring boot·python·eclipse·django·php