Spring的传播行为

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

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

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

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

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

相关推荐
AAA修煤气灶刘哥1 小时前
Spring AI 通关秘籍:从聊天到业务落地,Java 选手再也不用馋 Python 了!
后端·spring·openai
NineData1 小时前
NineData将亮相第27届GOPS全球运维大会,并带来技术演讲
运维·数据库·ninedata·智能·ai agent·数据管理工具·gops全球运维大会
不良人天码星1 小时前
谈谈redis的持久化
数据库·redis·缓存
qq_479875432 小时前
TimerFd & Epoll
java·服务器·数据库
绵绵细雨中的乡音2 小时前
MySQL 数据库核心操作全解析:从创建到备份与连接管理
数据库·oracle
zl9798993 小时前
SpringBoot-配置文件yaml
java·spring boot·spring
_extraordinary_4 小时前
Java Spring配置
java·开发语言·spring
wayuncn4 小时前
哈尔滨电商企业服务器托管方案
运维·服务器·数据库
工业甲酰苯胺4 小时前
Java并发机制的底层实现原理:从CPU到JVM的全面解析
java·jvm·spring
重整旗鼓~4 小时前
27.Redisson基本使用和可重入性
数据库·redis·缓存