@Transactional 的传播行为
时间: 2023-10-14 22:31:36 浏览: 85
Spring在Transaction事务传播行为种类
@Transactional 是一个在 Spring 框架中常用的注解,用于控制事务的传播行为。事务的传播行为指的是当一个方法被另一个方法调用时,事务应该如何传播到被调用的方法中。
@Transactional 注解可以应用在类级别或方法级别。当应用在方法级别时,它会覆盖类级别的注解。
@Transactional 注解有以下几种传播行为选项:
1. REQUIRED(默认):如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是最常用的传播行为选项。
2. SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式执行。
3. MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
4. REQUIRES_NEW:创建一个新的事务,并挂起当前事务(如果存在)。
5. NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,则挂起该事务。
6. NEVER:以非事务的方式执行操作,如果当前存在事务,则抛出异常。
7. NESTED:如果当前存在事务,则在嵌套事务中执行;如果当前没有事务,则创建一个新的事务。嵌套事务是被嵌套在外部事务中的内部事务,它们可以独立地进行提交或回滚。
通过 @Transactional 注解,我们可以灵活地控制事务的传播行为,以满足不同业务场景的需求。
阅读全文