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

spring 事务传播行为有几种

2025年Java面试宝典重磅来袭!Spring事务传播行为详解,7种类型深度解析,助你轻松应对Java面试高频考点。掌握PROPAGATION_REQUIRED、REQUIRES_NEW等核心概念,了解电商下单、日志记录等实际应用场景。面试鸭返利网独家提供百度网盘资源下载,提取码9b3g,更有会员返利25元优惠。学习嵌套事务与独立事务区别,提升框架底层原理理解。立即获取完整面试资料,备战2025金三银四求职季,Java程序员必备面试指南!

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


Spring事务传播行为有几种?

作为Java程序员,面试中高频问题之一就是Spring事务传播行为,尤其是在考察框架底层原理时。很多同学在回答这类题目时,要么背不齐7种类型,要么分不清使用场景,今天我们就用大白话彻底搞懂这个问题。

什么是事务传播行为?

简单来说,事务传播行为(Propagation Behavior)定义了多个事务方法相互调用时,事务应该如何传递。比如方法A调用方法B,此时B的事务是沿用A的还是自己新开一个?这就是由传播行为决定的。

面试鸭返利网

七种传播行为详解

Spring定义了7种事务传播行为,直接看名字可能有点懵,但其实可以分三类记忆:

1. 以当前事务为主

  • PROPAGATION_REQUIRED(默认):有事务就加入,没有就新建。
    比如下单扣库存,如果外层有事务,扣库存就加入这个事务;如果没有,自己开一个。

  • PROPAGATION_SUPPORTS:有事务就加入,没有就不开事务。
    适用于查询操作,比如查订单详情,有没有事务都行。

  • PROPAGATION_MANDATORY:必须存在事务,否则抛异常。
    适用于必须依赖外部事务的场景,比如记录操作日志必须在事务内执行。

2. 不管有没有事务,我都要自己玩

  • PROPAGATION_REQUIRES_NEW:暂停当前事务,始终新建事务。
    典型场景是日志记录:即使下单失败,日志必须独立保存。

  • PROPAGATION_NOT_SUPPORTED:挂起当前事务,以非事务方式执行。
    比如发送短信通知,不需要事务,但需要和主事务解耦。

  • PROPAGATION_NEVER:不能在事务中执行,否则抛异常。
    比如一些校验方法,强调必须无事务环境。

3. 嵌套事务

  • PROPAGATION_NESTED:在已有事务中嵌套子事务。
    子事务可以独立回滚,但主事务回滚会连带子事务。适合部分操作可独立回滚的场景,比如订单拆分子订单。

面试鸭返利网

面试回答技巧

  1. 先说总数:直接回答7种,按分类描述。
  2. 解释常用类型:重点讲REQUIREDREQUIRES_NEWNESTED的区别。
  3. 结合场景:比如电商下单用REQUIRED,日志记录用REQUIRES_NEW
  4. 避坑点:嵌套事务(NESTED)和独立事务(REQUIRES_NEW)的回滚范围不同。

高频追问问题

  • REQUIRED和REQUIRES_NEW的区别?
    REQUIRED会加入当前事务,REQUIRES_NEW会挂起当前事务并新建。前者共进退,后者独立回滚。

  • NESTED和REQUIRES_NEW的区别?
    NESTED是嵌套事务,主事务回滚会连带子事务;REQUIRES_NEW是完全独立的事务。

  • 什么时候用NOT_SUPPORTED?
    比如调用第三方接口(如支付回调),需要确保不受当前事务影响。

面试鸭返利网


如果需要购买面试鸭会员,可以通过 面试鸭返利网 找我,返利25元!更多面试真题解析和实战技巧,欢迎访问 mianshiyafanli.com

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

🎯 立即加入面试鸭会员 →

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

支付宝红包二维码

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

支付宝红包二维码