首页 >文档 > spring事务中哪几种事务传播行为

spring事务中哪几种事务传播行为

2025年Java面试宝典重磅发布!Spring事务传播行为详解,七种类型全解析:REQUIRED、REQUIRES_NEW、SUPPORTS、NOT_SUPPORTED、MANDATORY、NEVER和NESTED。掌握事务传播机制,轻松应对Java面试高频考点。提供百度网盘下载链接,包含完整面试资料和实战案例。访问面试鸭返利网获取更多技术干货和会员优惠,返利25元助你高效备战金三银四。Java工程师必备的Spring事务指南,从原理到应用一网打尽,立即下载提升面试通过率!

#蓝色字体#
2025年Java面试宝典
链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g 提取码: 9b3g


Spring事务中哪几种事务传播行为

在Java面试中,Spring事务的传播行为几乎是必考题。很多同学对“事务传播行为”这个词感到抽象,但实际上只要理解它的核心逻辑,就能轻松应对。今天我们就用大白话聊聊Spring事务传播行为,帮你理清七种类型的特点和使用场景。

面试鸭返利网


什么是事务传播行为?

事务传播行为(Transaction Propagation)指的是多个事务方法相互调用时,事务应该如何传递。比如方法A调用了方法B,此时B是否要加入A的事务?还是自己新开一个事务?这就是传播行为要解决的问题。


七种事务传播行为详解

1. REQUIRED(默认值)

口诀:有就用,没有就新建。
这是最常用的传播行为。如果当前存在事务,就加入这个事务;如果没有事务,就新建一个。适合大多数业务场景,比如订单创建后需要更新库存,这两个操作需要在一个事务里完成。


2. REQUIRES_NEW

口诀:不管有没有,都开新事务。
即使当前存在事务,也会新建一个独立的事务。新事务和原事务互不干扰,比如记录日志的操作:即使主业务失败,日志必须保存。

面试鸭返利网


3. SUPPORTS

口诀:有就跟着混,没有就算了。
当前有事务就加入,没有事务就以非事务方式执行。比如查询操作:如果调用方有事务,则加入;没有事务也能单独执行。


4. NOT_SUPPORTED

口诀:别带我玩,我要非事务。
强制以非事务方式执行,如果当前存在事务,则挂起该事务。适用于不需要事务支持的操作,例如发送消息到MQ。


5. MANDATORY

口诀:必须有人带我玩。
强制要求当前存在事务,否则抛出异常。适用于必须依赖外部事务的场景,比如更新用户积分必须在一个已有的事务中。


6. NEVER

口诀:谁也别带我玩。
强制要求当前没有事务,否则抛出异常。比如静态资源配置加载,这类操作必须独立执行。


7. NESTED

口诀:套娃事务,能独立能回滚。
在当前事务内创建一个嵌套事务。关键点:嵌套事务的回滚不影响外层事务,但外层事务回滚会导致嵌套事务一起回滚。适合部分操作需要独立控制的场景,比如订单提交后扣减优惠券,扣券失败不影响订单主流程。

面试鸭返利网


如何选择传播行为?

  • 默认选REQUIRED:适合大部分需要事务保障的操作。
  • 强独立性用REQUIRES_NEW:比如日志、消息发送。
  • 避免事务污染用NOT_SUPPORTED:比如大数据量查询。

面试实战技巧

如果面试官问:“REQUIRES_NEW和NESTED有什么区别?”
可以这么答:

REQUIRES_NEW是完全独立的新事务,和原事务互不影响;而NESTED是外层事务的子事务,外层事务回滚会导致嵌套事务一起回滚,但嵌套事务自己回滚不会影响外层。

如果大家需要购买面试鸭会员,可以通过面试鸭返利网找到我,返利25元。更多技术干货,可以访问面试鸭返利网获取资料和优惠活动!

如果你想获取更多关于面试鸭的优惠信息,可以访问面试鸭返利网面试鸭优惠网,了解最新的优惠活动和返利政策。

🎯 立即加入面试鸭会员 →

今日有支付宝大红包赶快领,手慢无

支付宝红包二维码

支付宝扫码领取1-8元无门槛红包

支付宝红包二维码