spring事务中有哪几种传播行为
时间: 2024-08-15 21:06:42 浏览: 38
Spring框架提供的事务传播行为有以下五种:
1. **REQUIRES_NEW**:如果当前存在一个事务,则放弃这个事务并创建一个新的事务;如果没有当前事务,则直接开始一个新的事务。
2. **MANDATORY**:如果存在一个当前正在运行的事务,那么在该事务中执行此操作;如果没有当前事务,则抛出异常。
3. **NEVER**:总是创建一个新的事务来执行此操作,如果有当前事务则抛出异常。这是最严格的事务隔离策略。
4. **NOT_SUPPORTED**:如果存在当前事务,则忽略它并创建一个新的事务来执行此操作;如果没有当前事务,则直接开始一个新的事务。
5. **REQUIRES_EXISTING**:如果存在当前正在运行的事务,并且该事务处于只读模式,则继续使用该事务;如果不存在当前事务或者当前事务不是只读模式,则抛出异常。
这些传播行为属性可以在`@TransactionManagementConfigurer`、`@Transactional`注解或者是配置类中设置,允许开发者根据实际需求选择适合的事务管理策略。例如,在需要保证数据一致性的情况下,可能会优先选择`REQUIRES_NEW`或者`REQUIRED`传播行为。
相关问题
spring 事务的传播行为有哪几种
Spring 事务的传播行为包括以下几种:
1. REQUIRED:如果当前存在事务,则加入该事务;如果当前不存在事务,则创建一个新事务。
2. SUPPORTS:如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务方式执行。
3. MANDATORY:如果当前存在事务,则加入该事务;如果当前不存在事务,则抛出异常。
4. REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。
5. NOT_SUPPORTED:以非事务方式执行,如果当前存在事务,则挂起当前事务。
6. NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
7. NESTED:如果当前存在事务,则在当前事务的嵌套事务中执行;如果当前不存在事务,则创建一个新事务。嵌套事务是与当前事务有关联的独立事务,可以独立地提交或回滚,但是当外层事务提交时,嵌套事务也需要提交。如果发生异常,外层事务可以回滚整个事务,包括嵌套事务。
spring提供了几种事务的传播行为
Spring 提供了 7 种事务的传播行为:
1. PROPAGATION_REQUIRED:支持当前事务,如果不存在则创建新事务。
2. PROPAGATION_SUPPORTS:支持当前事务,如果不存在则以非事务方式执行。
3. PROPAGATION_MANDATORY:支持当前事务,如果不存在则抛出异常。
4. PROPAGATION_REQUIRES_NEW:创建新事务,如果存在则将当前事务挂起。
5. PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果存在当前事务则将其挂起。
6. PROPAGATION_NEVER:以非事务方式执行,如果存在当前事务则抛出异常。
7. PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果没有当前事务,则执行与 PROPAGATION_REQUIRED 相同的操作。
阅读全文