Spring的传播行为

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

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

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

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

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

相关推荐
littlegirll15 分钟前
一个KADB测试实践
开发语言·数据库·测试用例·database
数据知道15 分钟前
数据库:一文掌握 Elasticsearch 的各种指令(Elasticsearch指令备忘)
数据库·elasticsearch·jenkins
wjm04100631 分钟前
mysql
数据库·mysql·oracle
IT邦德32 分钟前
PostgreSQL用SQL实现俄罗斯方块
数据库·sql·postgresql
hrrrrb1 小时前
【MySQL】索引
android·数据库·mysql
七七powerful1 小时前
mysql & 磐维(opengauss)&tidb误删数据之高级恢复
数据库·mysql·tidb
饼子会飞1 小时前
Android 手机QQ聊天记录导出(NTQQ),解密聊天数据库
android·数据库·python·qq聊天记录·ntqq
akbar&2 小时前
计算机四级 - 数据库原理(操作系统部分)- 第5章「内存管理」
数据库·笔记·系统架构
爱的叹息2 小时前
以mysql 为例, 在cmd 命令行连接数据,操作数据库,关闭数据库的详细步骤
数据库·mysql·adb
繁缕怀夕3 小时前
QT笔记----QCheckBox
数据库·笔记·qt