SpringBoot2.x-7种事务的传播性

SpringBoot2.x-7种事务的传播性

概述

  • 默认值:Propagation.REQUIRED

  • 1.Propagation.REQUIRED(必须存在)

  • 2.Propagation.REQUIRED_NEW(存在就挂起并新建)(多个事务分开提交,分开回滚)

  • 3.Propagation.SUPPORTS(正常运行)

  • 4.Propagation.NOT_SUPPORTS(挂起运行)

  • 5.Propagation.MANDATORY(必须被事务调用)

  • 6.Propagation.NEVER(禁止)

  • 7.Propagation.NESTED(嵌套)(嵌套事务一起提交,一起回滚)

1.REQUIRED(必须存在)

进入方法时判断:

​ 1.当前存在事务,就加入当前事务。

​ 2.当前不存在事务,就新建事务。

2.REQUIRED_NEW(存在就挂起并新建)(多个事务分开提交,分开回滚)

进入方法时判断:

​ 1.当前存在事务,就挂起当前事务,然后新建事务。

​ 2.当前不存在事务,就新建事务。

3.SUPPORTS(正常运行)

进入方法时判断:

​ 1.当前存在事务,就加入事务。

​ 2.当前不存在事务,就不使用事务。

4.NOT_SUPPORTS(挂起运行)

进入方法时判断:

​ 1.当前存在事务,就挂起事务。

​ 2.当前不存在事务,就不使用事务。

5.MANDATORY(必须被事务调用)

进入方法时判断:

1.调用者是否存在事务,不存在就抛出 “不存在事务异常”

6.NEVER(禁止)

进入方法时判断:

1.存在事务就抛出 “非法状态异常”

7.NESTED (嵌套)(嵌套事务一起提交,一起回滚)

类比 REQUIRED_NEW
不一样的是
声明为REQUIRED_NEW,是多个事务,独立提交回滚,存在多个方法,部分提交,部分回滚。
声明为NESTED (嵌套),是多个事务,一起提交回滚,不存在多个方法,部分提交,部分回滚。



❀❀❀❀❀❀❀❀❀❀❀❀

上一篇:Spring @Required 注解


下一篇:VUE Element-UI 用户修改和重置密码时,新密码和密码确认失去焦点的时候不一致的校验