Spring的传播行为

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

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

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

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

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

相关推荐
松涛和鸣1 小时前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
likangbinlxa1 小时前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql
r i c k2 小时前
数据库系统学习笔记
数据库·笔记·学习
暮色妖娆丶2 小时前
Spring 源码分析 单例 Bean 的创建过程
spring boot·后端·spring
野犬寒鸦2 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
IvorySQL3 小时前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·3 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
野生技术架构师3 小时前
SQL语句性能优化分析及解决方案
android·sql·性能优化
IT邦德3 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle