Spring的传播行为

spring的事务传播行为指在一个开启了事务的方法内,去调用了另一个方法,那么事务会怎么传播呢?是新开一个事务,还是融入外层事务呢?这就由Spring事务的传播行为来决定。

一般比较常用的传播行为是:REQUIRED、REQUIREs_NEW、NESTED。

Required是spring事务默认的传播行为,如果存在外层事务就会融入外层事务,如果没有则新建一个事务。这种传播行为适合多个方法需要在同一个事务下的场景,比如说创建订单和扣减库存,必须同时成功或者同时失败。

Requires_new,不管外层有没有事务都会创建一个新事务。这种传播行为适用于两个方法没有业务逻辑的关联,比如创建订单和记录日志,创建订单成功与否都需要去记录日志。

Nested,如果存在外层事务则嵌套外层事务,不存在则新建一个事务。嵌套事务的意思是如果外层事务提交,嵌套事务也会提交;外层事务回滚,嵌套事务就会回滚;嵌套事务可以独立回滚不会影响外层事务。这种场景适用于允许部分失败的业务,比如一个订单中有多个商品,其中有个商品库存不足了,只需要回滚那个商品就行了,其余商品可以下单成功。

相关推荐
java资料站2 小时前
十一、Spring AI Alibaba · 高级 · 多智能体(Multi-agent)
人工智能·spring·microsoft
仍然.2 小时前
Redis---缓存
数据库·redis·缓存
Aloudata2 小时前
LookML 语义模型 vs 企业级独立语义层:BI 建模语言能否承担企业语义底座?
数据库·人工智能·数据分析·数据资产·dataagent
细嗅蔷薇@3 小时前
排序和分⻚(order by 、limit)
数据库·oracle
wdfk_prog3 小时前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
逸模3 小时前
BIM在连锁餐饮装修中的应用:不只是画三维图
大数据·数据库·人工智能·物联网·建模
梦想平凡3 小时前
棋牌游戏技术实战(五):从对局事件重新执行规则,核对棋盘和最终状态
数据库·游戏·oracle
白露与泡影3 小时前
Oracle AI Database 26ai RAC 部署步骤、关键命令与一键脚本
数据库·人工智能·oracle
海马4 小时前
Spring Cloud 开发知识整理
spring·spring cloud·wpf
天天喝旺仔4 小时前
MySQL 索引原理与慢查询优化实战:从 B+ 树到执行计划调优
数据库·sql·mysql·性能优化