Spring的传播行为

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

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

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

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

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

相关推荐
DeepFlow 零侵扰全栈可观测8 分钟前
DeepFlow 全栈可观测性 护航某银行核心系统全生命周期
数据库·人工智能·分布式·云原生·金融
e***582311 分钟前
C#数据库操作系列---SqlSugar完结篇
网络·数据库·c#
L***p31313 分钟前
MYSQL的第一次
数据库·mysql
Y***985113 分钟前
MySQL下载安装及配置
数据库·mysql
Hello.Reader15 分钟前
Flink SQL 数据类型从 INT 到 VARIANT 的完整实战指南
python·sql·flink
Y***h18716 分钟前
Redis 下载与安装 教程 windows版
数据库·windows·redis
TDengine (老段)17 分钟前
TDengine 时区函数 TIMEZONE 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
yeshihouhou17 分钟前
redis基本类型 5种基本类型
数据库·redis·缓存
r***934821 分钟前
PostgreSQL版本选择
数据库·postgresql
半路_出家ren23 分钟前
Tomcat下配置woniusales
java·数据库·mysql·网络安全·adb·tomcat·firewalld