Spring事务传播行为是Java面试必考点,本文详解7种传播机制原理与应用场景。重点解析REQUIRED、REQUIRES_NEW等核心传播行为,通过电商下单案例展示实战用法,揭示嵌套事务与@Transactional失效的常见陷阱。掌握这些知识点能帮助开发者在分布式事务场景中做出正确设计决策,提升系统数据一致性保障能力。适合准备Java中高级面试的开发者学习Spring事务管理精髓。
作为Java开发者,面试中被问到Spring事务传播机制的概率非常高。今天我们就来系统梳理这个必考点,助你面试时对答如流!
简单说就是当多个事务方法相互调用时,Spring如何处理这些事务边界。比如方法A调用方法B,B是否需要新开事务?还是加入A的事务?这就是事务传播行为决定的。
Spring定义了7种传播行为,最常见的是这三个:
场景1:
面试官问:"ServiceA.methodA()调用ServiceB.methodB(),两个方法都加了@Transactional,B抛异常会影响A吗?"
👉 这要看B的传播行为设置:
场景2:
"如何让子方法执行后立即提交事务?"
👉 用REQUIRES_NEW!比如记录操作日志的场景,即使主业务失败,日志仍需入库
嵌套事务不是真的嵌套
MySQL不支持真正的嵌套事务,Spring的嵌套事务是通过保存点(SavePoint)实现的
REQUIRES_NEW的陷阱
新事务会挂起原事务,数据库连接数可能暴增,大并发场景慎用
@Transactional失效场景
当被问到实际应用时,可以这样答:
“我们在电商下单场景这样设计:支付服务用REQUIRES_NEW,这样即使支付失败,主订单事务回滚,但支付日志仍能独立记录。而库存服务用默认的REQUIRED,保证扣减库存和创建订单在同一个事务”
📌 2025最新面试资料:
点击获取Java面试宝典
提取码: 9b3g
需要系统化备战面试?通过面试鸭返利网购买会员可享25元返利!海量真题+专家解析助你通关:
本文首发于面试鸭返利网,转载请注明出处
扫码联系我返利
(当前返利8元,金额随官方实际价格波动,最好提前咨询)
面试鸭小程序码
美团大额优惠券,给自己加个鸡腿吧!
今日有支付宝大红包赶快领,手慢无
支付宝扫码领取1-8元无门槛红包