【Spring事务必知必会】高频问题升级!7种传播行为详解+实战避坑指南

导语:事务传播机制是Spring事务中最容易踩坑的知识点之一!本文通过真实代码演示+日志分析,带你彻底搞懂7种传播行为,从此不再被面试官问倒!


面试官(优化版):事务传播机制到底怎么选?

通俗理解
事务传播机制就像“多个任务协作时的分工规则”——当方法A调用方法B时,B的事务该如何处理?是跟着A干,还是自己单干?

下面由"弱到强"详细讲解Spring的7种传播规则(MANDATORY抛异常->SUPORT不处理->REQUIRDE新建->REQUIRES_NEW总是新建->NOT_SUPPORTED挂起->NEVER抛异常;DESTED嵌套)。

首先是准备两个方法:

// UserService
public void addUser() {
    userMapper.insert(user);  // 插入用户
}

// BlogService
public void addBlog() {
    blogMapper.insert(blog);  // 插入博客
}

1.MANDATORY
  • 规则:必须跟着大哥干,没大哥就罢工(抛异常);如果当前存在事务,则加入该事务;如果当前没有事务,它会抛出异常。这种传播行为要求调用方法必须在一个现有的事务中运行

  • 场景:强制要求方法在事务中被调用(如敏感操作审计)

  • 代码验证

// 直接调用会抛异常!
@Transactional(propagation = Propagation.MANDATORY)
public void addBlog() {
    blogMapper.insert(blog);
}

// 没有事务的方法调用也会抛异常
public void addUser() {
    userMapper.insert(user);  // 插入用户
    blogService.addBlog();    // 调用博客服务
}

  • 异常日志
    No existing transaction found for transact

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙悟饭Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值