Spring事务传播默认是哪个
-
Spring事务传播默认是REQUIRED。
在Spring中,事务传播是指在一个方法调用其他方法时,如何处理事务的传播行为。事务传播行为主要用于控制事务的边界范围以及事务在不同方法调用间的传播方式。
在Spring中,事务传播行为有多种选项,包括REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER和NESTED。其中,REQUIRED是最常用的一个选项,也是默认的事务传播行为。
REQUIRED表示当前方法必须运行在一个事务中,如果当前已经存在一个事务,则方法直接运行在该事务中;如果当前没有事务,则会开启一个新的事务。
在默认情况下,如果没有指定事务传播行为,则事务传播行为默认为REQUIRED。这意味着当一个方法调用另一个方法时,默认情况下,被调用的方法会在同一个事务中运行。如果被调用的方法中发生异常,事务将会回滚;如果被调用的方法执行成功,则事务将会提交。
需要注意的是,如果当前存在一个事务,并且被调用的方法使用了REQUIRES_NEW的事务传播行为,则当前事务将会挂起,而被调用的方法将会在一个新的事务中运行。这样可以保证被调用的方法可以独立于当前事务进行操作。
总结来看,Spring事务传播行为默认是REQUIRED,即当前方法必须运行在一个事务中。通过设置不同的事务传播行为,可以灵活控制事务的边界范围和传播方式,从而实现复杂的事务管理需求。
1年前 -
Spring事务传播的默认设置是:PROPAGATION_REQUIRED。
1年前 -
Spring事务传播默认是REQUIRED。
事务传播是指在多个事务操作中,一个事务方法调用另一个事务方法时,如何处理事务的扩展和传播。在Spring中,事务传播是通过TransactionDefinition接口定义的。
Spring中共定义了七种事务传播行为,分别为REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER和NESTED。
在默认情况下,Spring的事务传播行为是REQUIRED。这意味着如果当前存在一个事务,那么方法将在该事务中执行;如果当前没有事务,则会创建一个新的事务。具体的事务传播机制可以通过在@Transactional注解中指定propagation属性来进行设置。
下面将详细介绍Spring事务传播的默认行为REQUIRED和其他几种常用的传播行为:
-
REQUIRED(默认):
REQUIRED事务传播行为表示当前方法必须在一个事务中运行。如果当前已经存在一个事务,则方法将在该事务中执行;如果当前没有事务,则会创建一个新的事务。 -
SUPPORTS:
SUPPORTS事务传播行为表示当前方法支持事务,但不会强制执行在一个事务中。即如果当前存在一个事务,则方法在该事务中运行;如果当前没有事务,则方法以非事务方式运行。 -
MANDATORY:
MANDATORY事务传播行为表示当前方法必须在一个事务中运行,但是它不会创建事务。如果当前没有事务,则抛出异常。 -
REQUIRES_NEW:
REQUIRES_NEW事务传播行为表示当前方法必须在一个新的事务中运行。即如果当前存在一个事务,则将该事务挂起,并创建一个新的事务。 -
NOT_SUPPORTED:
NOT_SUPPORTED事务传播行为表示当前方法不应该在事务中运行。即如果当前存在一个事务,则将该事务挂起,在方法执行期间将不会有事务。 -
NEVER:
NEVER事务传播行为表示当前方法不允许在事务中运行。如果当前存在一个事务,则抛出异常。 -
NESTED:
NESTED事务传播行为表示当前方法必须在一个嵌套事务中运行。如果当前没有事务,则创建一个新的嵌套事务;如果当前存在一个事务,则在该事务的范围内嵌套执行。
通过在代码中使用@Transactional注解,并指定相应的propagation属性,可以对方法的事务传播行为进行设置,以满足具体业务需求。同时,Spring还支持通过编程方式设置事务传播行为,使用TransactionTemplate类可以更灵活地控制事务的传播行为。
1年前 -