Spring的传播行为

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

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

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

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

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

相关推荐
广州智造1 小时前
OptiStruct实例:3D实体转子分析
数据库·人工智能·算法·机器学习·数学建模·3d·性能优化
技术宝哥4 小时前
Redis(2):Redis + Lua为什么可以实现原子性
数据库·redis·lua
学地理的小胖砸5 小时前
【Python 操作 MySQL 数据库】
数据库·python·mysql
不知几秋5 小时前
sqlilab-Less-18
sql
dddaidai1236 小时前
Redis解析
数据库·redis·缓存
数据库幼崽6 小时前
MySQL 8.0 OCP 1Z0-908 121-130题
数据库·mysql·ocp
Amctwd6 小时前
【SQL】如何在 SQL 中统计结构化字符串的特征频率
数据库·sql
betazhou7 小时前
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
linux·数据库·mysql·oracle·ogg
沛沛老爹7 小时前
软件架构风格系列(2):面向对象架构
spring·软件架构风格·面向对象架构·架构入门