在 Spring 框架里,事务传播行为用于定义在嵌套事务场景下,新事务与现有事务之间的交互方式。Spring 定义了 7 种事务传播行为,这些行为由org.springframework.transaction.annotation.Propagation
枚举类提供。以下是对这些传播行为的详细介绍:
1. Propagation.REQUIRED
(默认值)
- 基本含义:这是最常用的事务传播行为。当一个带有
REQUIRED
传播行为的方法被调用时,如果当前已经存在一个事务,那么该方法会加入到这个现有的事务中执行;如果当前没有事务,那么它会创建一个新的事务来执行自身的操作。 - 实际场景示例:假设你有一个电商系统,有一个
OrderService
类的createOrder
方法和一个InventoryService
类的decreaseInventory
方法。createOrder
方法用于创建订单,decreaseInventory
方法用于减少商品库存。createOrder
方法开启了一个事务,在其内部调用了decreaseInventory
方法,由于decreaseInventory
方法默认传播行为是REQUIRED
,它会加入到createOrder
方法的事务中。这样,如果在整个过程中出现异常,整个订单创建和库存减少的操作都会回滚,保证了数据的一致性。