@Transactional 的传播行为
时间: 2023-10-14 07:31:36 浏览: 90
@Transactional 是一个在 Spring 框架中常用的注解,用于控制事务的传播行为。事务的传播行为指的是当一个方法被另一个方法调用时,事务应该如何传播到被调用的方法中。
@Transactional 注解可以应用在类级别或方法级别。当应用在方法级别时,它会覆盖类级别的注解。
@Transactional 注解有以下几种传播行为选项:
1. REQUIRED(默认):如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是最常用的传播行为选项。
2. SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式执行。
3. MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
4. REQUIRES_NEW:创建一个新的事务,并挂起当前事务(如果存在)。
5. NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,则挂起该事务。
6. NEVER:以非事务的方式执行操作,如果当前存在事务,则抛出异常。
7. NESTED:如果当前存在事务,则在嵌套事务中执行;如果当前没有事务,则创建一个新的事务。嵌套事务是被嵌套在外部事务中的内部事务,它们可以独立地进行提交或回滚。
通过 @Transactional 注解,我们可以灵活地控制事务的传播行为,以满足不同业务场景的需求。
相关问题
@transactional传播级别
@transactional传播级别是指在使用Spring的@Transactional注解时,指定事务的传播行为。Spring支持多种传播级别,包括REQUIRED、REQUIRES_NEW、NESTED、SUPPORTS、MANDATORY、NOT_SUPPORTED和NEVER。其中NESTED表示如果当前已经存在一个事务,那么该方法将会在嵌套事务中运行。嵌套的事务可以独立于当前事务进行单独地提交或回滚。如果当前事务不存在,那么其行为与REQUIRED一样。而NOT_SUPPORTED表示该方法不应该运行在事务中,如果存在当前事务,在该方法运行期间,当前事务将被挂起。
@transactional 传播机制
在Spring的@Transactional注解中,传播机制指的是多个事务方法相互调用时,事务如何在这些方法间传播的过程机制。根据引用和引用的描述,Spring中的@Transactional注解支持多种传播机制,其中包括Propagation.REQUIRED(默认)、Propagation.REQUIRES_NEW等。
具体来说,Propagation.REQUIRED表示若当前存在事务,则方法加入该事务中执行,若当前不存在事务,则创建新的事务。而Propagation.REQUIRES_NEW表示无论当前事务是否存在,都会创建一个新的事务,并将当前事务挂起。
因此,使用@Transactional注解时,通过设定不同的传播机制,可以实现对事务的灵活管理,根据业务需求确定事务的行为。
阅读全文