事务的传播特性指的是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行?

spring的事务传播行为一共有7种:

Spring事务的传播行为REQUIRES_NEW和REQUIRED区别

备注:上面图是从其他博客截取的,忘记链接了。

应用场景:A方法中调用B和C方法 其中BC都进行-1操作 括号中的报错意思指在该方法中故意报错比如1/0这样看效果

执行顺序 A(调用BC) B(-1操作) C(-1操作) 结果
A-->BC REQUIRED REQUIRED REQUIRED BC都会-1       BC执行
A-->BC REQUIRED REQUIRED(报错) REQUIRED BC都会回滚    B执行 C不执行
A-->BC REQUIRED REQUIRED_NEW(报错) REQUIRED  BC都会回滚           B执行 C不执行
A-->CB REQUIRED REQUIRED_NEW(报错) REQUIRED BC都会回滚(因为B报错了,A接收了错误导致C也有问题了,就会C也跟着回滚) BC都执行
A-->CB REQUIRED REQUIRED_NEW(报错) REQUIRED_NEW B回滚  C-1   BC都执行
A-->BC REQUIRED REQUIRED_NEW REQUIRED(报错) B-1        C回滚   BC都执行
A-->CB REQUIRED REQUIRED_NEW REQUIRED(报错) B没有执行   C回滚   C执行 B不执行
A-->BC REQUIRED(报错) REQUIRED_NEW REQUIRED_NEW BC-1 都不会回滚  BC都执行
A-->BC REQUIRED(报错) REQUIRED REQUIRED BC都会回滚       BC都执行
A-->BC REQUIRED(报错) REQUIRED_NEW REQUIRED B-1        C回滚   BC都执行
A-->BC REQUIRED(报错) REQUIRED REQUIRED_NEW B回滚      C-1  BC都执行

 

 

相关文章: