转载自:事务传播行为
1.事务传播行为含义
事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何运行。
2.事务的7种传播行为
1.REQUIRED(默认)
2.MANDATORY
3.NOT_SUPPORTED
4.SUPPORTS
5.REQUIRES_NEW
6.NEVER
7.NESTED
3.事务传播行为的详细介绍
REQUIRED(默认): 是Spring默认的传播机制。如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新事务。REQUIRED传播机制最常用的情况是在一个事务中进行多个操作,要么全部成功,要么全部失败。如果其中一个操作失败,整个事务都将被回滚。
SUPPORTS:传播机制表示当前方法如果在一个事务中被调用,则加入该事务;否则,以非事务的方式运行。SUPPORTS传播机制适用于对事务要求不高的操作,例如读取操作。
MANDATORY:传播机制表示当前方法必须在一个事务中被调用,否则将抛出异常。MANDATORY传播机制适用于在需要事务的情况下调用方法。
REQUIRES_NEW:传播机制表示当前方法必须开启一个新事务运行,如果当前存在事务,则挂起该事务。REQUIRES_NEW传播机制适用于对事务要求较高的操作,例如更新操作。
NOT_SUPPORTED:传播机制表示当前方法不应该在事务中运行,如果存在事务,则挂起该事务。NOT_SUPPORTED传播机制适用于对事务没有要求的操作,例如日志记录等。
NEVER:传播机制表示当前方法不应该在事务中运行,如果存在事务,则抛出异常。NEVER传播机制适用于禁止在事务中运行的操作,例如安全检查等。
NESTED:传播机制表示当前方法必须在一个嵌套事务中运行,如果当前存在事务,则在该事务内开启一个嵌套事务;如果当前没有事务,则创建一个新事务。NESTED传播机制适用于需要分步操作的场景,例如订单中创建订单和订单项的操作。