spring事务传播行为有哪些
-
Spring事务传播行为共有7种:
-
REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是最常用的传播行为。
-
SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。
-
MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
-
REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则将当前事务挂起。
-
NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则将当前事务挂起。
-
NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。
-
NESTED:如果当前存在事务,则在当前事务的嵌套事务中执行;如果当前没有事务,则新建一个嵌套事务执行。嵌套事务是独立于父事务的,它有自己的事务提交和回滚,但是最后仍然要由父事务提交或回滚。
1年前 -
-
在Spring框架中,事务传播行为是指当一个方法调用另一个方法时,被调用方法如何处理事务的行为。Spring框架为开发者提供了多种事务传播行为选项,以便根据具体需求选择适合的行为。下面是几种常见的事务传播行为:
-
REQUIRED:
REQUIRED是默认的传播行为,也是最常用的传播行为。如果当前方法在事务环境中运行,则将加入当前事务,如果不存在事务,则创建新的事务并在其中执行。这种传播行为适用于绝大多数业务场景。 -
REQUIRES_NEW:
REQUIRES_NEW表示如果当前方法已经存在事务,则挂起当前事务并创建新的事务执行被调用方法,如果当前方法没有事务,则创建新的事务并在其中执行。这种传播行为常用于需要独立事务的场景,如一些独立的批处理任务。 -
SUPPORTS:
SUPPORTS表示如果当前方法在事务环境中运行,则加入当前事务执行,如果当前方法不在事务环境中,则以非事务方式执行。这种传播行为适用于一些不需要强制事务的业务场景。 -
NOT_SUPPORTED:
NOT_SUPPORTED表示当前方法不应该在事务环境中运行,如果当前方法在事务环境中运行,则将事务挂起并以非事务方式执行。这种传播行为适用于一些不需要事务支持的业务场景,或者在某些特殊情况下需要禁用事务。 -
MANDATORY:
MANDATORY表示如果当前方法在事务环境中运行,则加入当前事务执行,如果当前方法不在事务环境中,则抛出异常。这种传播行为适用于一些必须在事务环境中运行的业务场景,如果不满足将会抛出异常。
总之,Spring框架通过提供多种事务传播行为选项,使得开发者能够根据具体需求来选择合适的事务行为,以确保数据的一致性和完整性。不同的事务传播行为适用于不同的业务场景,开发者在使用时需要根据实际情况进行选择。
1年前 -
-
Spring事务传播行为是用来定义在多个事务方法之间发生的事务传播规则和行为的。Spring框架提供了七种不同的事务传播行为,分别是:
-
REQUIRED(默认):如果当前存在事务,则加入该事务,如果不存在事务,则创建一个新的事务。
-
SUPPORTS:如果当前存在事务,则加入该事务,如果不存在事务,则以非事务的方式执行。
-
MANDATORY:如果当前存在事务,则加入该事务,如果不存在事务,则抛出异常。
-
REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。
-
NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,则挂起当前事务。
-
NEVER:以非事务的方式执行操作,如果当前存在事务,则抛出异常。
-
NESTED:如果当前存在事务,则在嵌套事务中执行,如果不存在事务,则创建一个新的事务。嵌套事务是在已存在事务的基础上创建的一个子事务,它可以独立于父事务进行 commit 或 rollback,只对父事务产生部分影响。
在Spring中,可以通过在方法上使用
@Transactional注解来设置事务传播行为,例如:@Transactional(propagation = Propagation.REQUIRED) public void doSomething() { // 事务处理的代码 }除了在方法上使用注解来设置事务传播行为,还可以在配置文件中通过
<tx:annotation-driven>标签来启用对注解的支持,并设置默认的事务传播行为。例如:<tx:annotation-driven transaction-manager="transactionManager" default-rollback-for="Exception" />在使用事务的过程中,根据实际需求选择合适的事务传播行为是非常重要的,能够确保事务的一致性和可靠性。
1年前 -