任何应用程序都涉及许多服务或组件调用其他服务或组件。事务传播指示任何组件或服务是否将参与事务,以及如果调用组件/服务已经或者没有已创建事务,它将如何表现。有六种类型的事务传播:
- REQUIRED默认
- SUPPORTS
- NOT_SUPPORTED
- REQUIRES_NEW
- NEVER
- MANDATORY
REQUIRED默认
如果调用者的服务中有一个存在的事务,那么就使用这个存在的,如果调用者中没有事务上下文,则创建一个新的事务。
SUPPORTS
如果调用者的服务中有一个存在的事务,那么就使用这个存在的,如果调用者中没有事务上下文,则不会创建一个新的事务。
NOT_SUPPORTED
无论调用者是否有事务,都不会创建或参与任何一个事务。
REQUIRES_NEW
无论调用者是否有事务,总是会创建自己的一个事务。
NEVER
如果调用者有事务,会抛出exception,如果调用者没有事务,也不会创建事务,在没有事务环境下运行。
MANDATORY
如果调用者的服务中有一个存在的事务,那么就使用这个存在的,如果调用者中没有事务上下文,会抛出exception。
点击标题见原文代码案例。