springboot 事务的传播性
时间: 2023-12-04 10:40:43 浏览: 31
Spring Boot事务传播性是指在多个事务方法相互调用的情况下,事务是如何在这些方法中进行传递的。Spring Boot提供了7种不同的事务传播行为,分别是:
1. REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
2. SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
3. MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
4. REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起该事务。
5. NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则挂起该事务。
6. NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。
7. NESTED:如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则创建一个新的事务。
举个例子,假设方法A和方法B都有事务注解,方法A调用方法B,那么根据不同的传播行为,事务的处理方式也不同。如果传播行为是REQUIRED,那么方法B会加入方法A的事务中,如果方法A没有事务,则会创建一个新的事务。如果传播行为是REQUIRES_NEW,那么方法B会创建一个新的事务,与方法A的事务无关。
```java
@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {
// do something
methodB();
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodB() {
// do something
}
```