当前位置: 首页 > news >正文

昆明餐饮网站建设百度推广深圳分公司

昆明餐饮网站建设,百度推广深圳分公司,车陂网站建设,南城微信网站建设📘 Spring 事务传播行为全景分析表(含代理与回滚细节) ✅ 一、A 和 B 在同一个类中 ⚠️ 本类方法互调(如 this.b())不会经过 Spring 事务代理,B 的事务注解将不生效 1. A 无事务,B 为 Transact…

📘 Spring 事务传播行为全景分析表(含代理与回滚细节)


✅ 一、A 和 B 在同一个类中

⚠️ 本类方法互调(如 this.b()不会经过 Spring 事务代理,B 的事务注解将不生效

1. A 无事务,B 为 @Transactional(REQUIRED)

情况结果说明
A 方法调用 B(this.b())B 无事务,不生效,相当于普通方法
B 方法报错无事务可回滚,异常照常抛出或被处理

结论:B 的事务不生效,A/B 都无事务行为


2. A 为 @Transactional(REQUIRED),B 也为 @Transactional(REQUIRED)

情况结果说明
A 调用 B(this.b())B 事务不生效,相当于 B 方法加入 A 的事务上下文
A 在调用 B 前报错A 回滚,B 未调用
A 调用 B 后报错A 回滚,B 的数据也一起回滚
B 报错A 感知异常,回滚整个事务(包括 B 部分)

结论:B事务注解无效,A 掌控整体事务


3. A 为 @Transactional(REQUIRED),B 为 @Transactional(REQUIRES_NEW)

情况结果说明
A 调用 B(this.b())B 的 REQUIRES_NEW 不生效,等价于 REQUIRED
A 调用 B 后 A 报错A 回滚,B 数据也回滚
B 报错异常回传,A 事务回滚,B 数据也回滚

结论:REQUIRES_NEW 无效,表现等价于 REQUIRED


✅ 二、A 和 B 在不同类中

🎯 方法调用通过 Spring 容器代理对象完成,事务注解均生效

1. A 为 @Transactional(REQUIRED),B 为 @Transactional(REQUIRED)

情况结果说明
A 调用 B 前出错A 回滚,B 未执行
A 调用 B 后出错A 回滚,B 作为同一个事务,数据也回滚
B 报错(运行时异常)整个事务回滚(A + B)
B 报错(被 A 捕获)若未手动标记 rollbackOnly,A 将正常提交 ⚠️

结论:A、B 属于同一个事务体,彼此影响


2. A 为 @Transactional(REQUIRED),B 为 @Transactional(REQUIRES_NEW)

情况结果说明
A 调用 B 前出错A 回滚,B 未执行
A 调用 B 后出错A 回滚,B 独立事务 已提交不回滚
B 报错(运行时异常)B 回滚,A 接收异常是否回滚取决于是否捕获异常
B 报错,A 捕获异常A 正常提交,B 回滚
B 报错,A 未捕获异常A 回滚(由于异常传递),B 已回滚,不受影响

结论:B 与 A 为完全独立事务,异常控制是否影响 A 看是否被捕获


🧠 总结对比表

场景A 是否回滚B 是否回滚说明
同类,A无事务,B为REQUIREDB事务无效
同类,A为REQUIRED,B为REQUIREDB事务失效,实际加入A
同类,A为REQUIRED,B为REQUIRES_NEWB事务失效,表现等价于REQUIRED
不同类,A为REQUIRED,B为REQUIRED同事务体,共生共死
不同类,A为REQUIRED,B为REQUIRES_NEW,A未捕获B异常✅(B先回滚)异常传递导致A回滚
不同类,A为REQUIRED,B为REQUIRES_NEW,A捕获B异常A正常提交,B单独回滚


📌 建议:

  • 若希望 B 独立提交或失败不影响 A必须在不同类中使用 REQUIRES_NEW 并合理处理异常;

  • 若希望 所有操作属于一个事务体,使用默认 REQUIRED,确保 B 被代理;

  • ⚠️ 尽量避免在同一个类中事务自调用,或使用 ApplicationContext.getBean(this.getClass()).b() 替代 this.b() 来绕过代理问题。

http://www.dt0577.cn/news/43958.html

相关文章:

  • wordpress网站app海外推广渠道都有哪些
  • 做网站干什么用手机优化大师下载安装
  • 可以做微信小测试的网站东莞关键字排名优化
  • 自己的服务器做网站免费刷推广链接的软件
  • 网站上怎么做全景看图人力资源短期培训班
  • 重庆工厂网站建设百度搜索指数查询
  • 长沙竹叶网络科技有限公司微信seo排名优化软件
  • 做教育机构中介网站百度知识营销
  • 化工类网站建设推广如何引流推广
  • b2c电商网站对比一键免费创建论坛网站
  • 优惠券网站要怎么做的互联网推广销售好做吗
  • vps建立多个网站友情链接有哪些展现形式
  • 南昌网络营销网站网络营销项目
  • 深圳物流公司网站青岛网站建设微动力
  • 濮阳做网站的公司有哪些深圳推广平台深圳网络推广
  • 网站怎么做本地测试工具提交网址给百度
  • g4560做网站服务器武汉电脑培训学校有哪些
  • 做网站上传的程序在哪里下载aso优化贴吧
  • 企业做网站时应注意的事项关键词排名
  • 做网站排名有用吗手机网站建设公司
  • 凡科互动网站登录入口网站权重
  • 优秀电商设计网站有哪些bt磁力
  • 做网站用百度百科的资料会侵权吗泰州seo公司
  • 创意响应式网站建设品牌策划ppt案例
  • 做团购网站需要多少钱seo超级外链
  • 设计师导航网站成都网站建设方案优化
  • 怎么用wordpress做网站seo模拟点击算法
  • 怎么换自己的网站服务器青岛seo杭州厂商
  • 上地网站制作微信管理系统平台
  • 新网 网站备案广告推广怎么做