@Transactional事务默认的传播行为是()
时间: 2023-06-30 13:27:29 浏览: 78
`@Transactional`事务的默认传播行为是`Propagation.REQUIRED`,即如果当前没有事务,则新建一个事务;如果当前已经存在一个事务中,则加入这个事务,成为一个整体。这是最常见的传播行为,也是Spring默认的传播行为。在使用`@Transactional`注解时,可以通过`propagation`属性来指定不同的传播行为。例如:
```java
@Transactional(propagation = Propagation.REQUIRED)
public void foo() {
// ...
}
```
除了`Propagation.REQUIRED`之外,`@Transactional`注解还支持以下传播行为:
- `Propagation.SUPPORTS`:如果当前存在事务,则加入这个事务;如果当前不存在事务,则以非事务的方式继续执行。
- `Propagation.MANDATORY`:如果当前存在事务,则加入这个事务;如果当前不存在事务,则抛出异常。
- `Propagation.REQUIRES_NEW`:无论是否存在事务,都创建一个新的事务并在它自己的事务内执行。
- `Propagation.NOT_SUPPORTED`:以非事务方式执行操作,如果当前存在事务,则将事务挂起。
- `Propagation.NEVER`:以非事务方式执行操作,如果当前存在事务,则抛出异常。
- `Propagation.NESTED`:如果当前存在事务,则在嵌套事务内执行;如果当前不存在事务,则创建一个新事务。嵌套事务是一个独立的事务,有自己的提交和回滚操作,但它的提交和回滚并不会对外层事务造成影响。
阅读全文