什么是Spring事务传播行为?
事务传播行为用来描述由某一个事务传播行为修饰的方法被嵌套进另一个方法的时,事务如何传播。
假设ServiceA 中方法A()调用 ServiceB中方法 B()(B被事务修饰),那么会有两种情况:
方法A有事务,方法B有事务
方法A没有事务,方法B有事务
Spring中的事务传播行为有7种,默认为 Propagation.REQUIRED:
1. Propagation.REQUIRED
如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。
2. Propagation.SUPPORTS
如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务的方式继续运行。
3. Propagation.MANDATORY
如果当前存在事务,则加入该事务;如果当前不存在事务,则抛出异常。
4. Propagation.REQUIRES_NEW
重新创建一个新的事务,如果当前存在事务,暂停当前的事务。
5. Propagation.NOT_SUPPORTED
以非事务的方式运行,如果当前存在事务,暂停当前的事务。
6. Propagation.NEVER
以非事务的方式运行,如果当前存在事务,则抛出异常。
7. Propagation.NESTED
和 Propagation.REQUIRED 效果一样。
备注:
当前,可理解为上例中的A方法。
详情可见:https://blog.csdn.net/pml18710973036/article/details/58607148