spring事务的传播行为有哪些
-
Spring事务的传播行为包括下面几种:
-
PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务,如果不存在事务,则创建一个新事务。这是默认的传播行为。
-
PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务,如果不存在事务,则以非事务的方式执行。
-
PROPAGATION_MANDATORY:如果当前存在事务,则加入该事务,如果不存在事务,则抛出异常。
-
PROPAGATION_REQUIRES_NEW:创建一个新事务,如果当前存在事务,则将当前事务挂起。
-
PROPAGATION_NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,则将当前事务挂起。
-
PROPAGATION_NEVER:以非事务的方式执行操作,如果当前存在事务,则抛出异常。
-
PROPAGATION_NESTED:如果当前存在事务,则在一个嵌套的事务中执行,如果不存在事务,则按照PROPAGATION_REQUIRED的方式执行。
这些传播行为可以在@Transactional注解或者xml配置文件中指定,用来控制事务的行为。根据不同的业务场景,可以选择适合的传播行为来处理事务。
1年前 -
-
Spring事务的传播行为是指在多个事务方法调用的情况下,事务的传播方式。Spring提供了七种不同的事务传播行为。
-
REQUIRED:如果当前存在事务,则加入当前事务,如果不存在事务,则创建一个新的事务。这是默认的传播行为。
-
SUPPORTS:如果当前存在事务,则加入当前事务,如果不存在事务,则以非事务的方式执行。
-
MANDATORY:如果当前存在事务,则加入当前事务,如果不存在事务,则抛出异常。
-
REQUIRES_NEW:始终创建一个新的事务,如果当前存在事务,则将当前事务挂起。
-
NOT_SUPPORTED:以非事务的方式执行,如果当前存在事务,则将当前事务挂起。
-
NEVER:以非事务的方式执行,如果当前存在事务,则抛出异常。
-
NESTED:如果当前存在事务,则在嵌套事务内执行,如果不存在事务,则创建一个新的事务。内层事务可以单独提交或回滚,但是外层事务的提交或回滚会影响到内层事务。
这些不同的传播行为可以根据业务需求选择合适的方式来维护事务的一致性和隔离性。
1年前 -
-
Spring事务的传播行为是指在多个事务方法调用或者事务方法嵌套调用的场景下,各个事务之间如何相互影响并决定最终的事务结果。Spring提供了以下七种事务传播行为:
-
PROPAGATION_REQUIRED(默认):如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新事务。这是最常见的传播行为,表示事务方法必须运行在一个事务中。
-
PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式运行。该传播行为适用于不要求事务特性的方法,它们可以在事务上下文中运行,但不需要一个真正的事务。
-
PROPAGATION_MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。该传播行为表示事务方法必须运行在一个已经存在的事务中,否则会抛出异常。
-
PROPAGATION_REQUIRES_NEW:创建一个新的事务,并将当前事务挂起。如果当前存在事务,则将其挂起;如果当前没有事务,则创建一个新事务。该传播行为适用于需要一个独立事务的方法,不受外部事务的影响。
-
PROPAGATION_NOT_SUPPORTED:以非事务方式运行,并挂起当前事务。如果当前存在事务,则将其挂起;如果当前没有事务,则以非事务方式运行。该传播行为适用于不需要事务特性的方法,它们将在没有事务上下文的情况下运行。
-
PROPAGATION_NEVER:以非事务方式运行,并抛出异常如果当前存在事务,则抛出异常;如果当前没有事务,则以非事务方式运行。该传播行为适用于被声明为非事务的方法,如果方法在一个事务中被调用,则会抛出异常。
-
PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则创建一个新的事务。如果外部事务失败,嵌套事务会被回滚。该传播行为适用于需要一个保存点和独立保存点的方法,在父事务的范围内创建子事务。
以上是Spring事务的传播行为,可以根据实际需求选择适合的传播行为来管理事务。
1年前 -