传播行为

定义

Spring中的传播行为(Propagation)是指当一个事务性方法调用另一个事务性方法时,事务如何传播和处理的策略。传播行为定义了一个方法应该如何参与现有的事务,或者是否应该启动新的事务。

组成部分

Spring支持多种传播行为,最常见的包括:
1.REQUIRED:如果当前存在事务,则加入该事务;如果没有事务,则创建一个新事务。
2.REQUIRES_NEW:总是创建一个新事务,当前事务(如果存在)将被挂起。
3.SUPPORTS:如果当前存在事务,则加入;如果没有事务,则以非事务方式执行。
4.NOT_SUPPORTED:总是以非事务方式执行,如果存在事务,则将其挂起。
5.MANDATORY:必须在一个现有事务中运行,如果没有现有事务则抛出异常。
6.NEVER:不能在事务中运行,如果当前存在事务则抛出异常。
7.NESTED:如果当前存在事务,则创建一个嵌套事务;如果没有事务,则与REQUIRED相同。

结构形式

不同的传播行为表示事务在执行链中的关系,有的需要新建事务,有的依赖现有事务。

分类

传播行为根据是否需要新建事务、依赖现有事务或者完全脱离事务环境

分为创建事务型、加入事务型、非事务型。

作用

传播行为决定了在不同场景下如何控制事务的开启、挂起或结束,从而保证数据的一致性和事务的正确性。

目的

传播行为的目的是确保在复杂的事务环境中,事务方法的调用能够按照预期的方式执行,尤其是在嵌套调用、并发调用或者分布式调用中确保事务的一致性。

基本原理

传播行为通过控制事务的开启、挂起或合并,实现了事务边界的灵活控制。

行为

定义

Spring中的传播行为(Propagation)是指当一个事务性方法调用另一个事务性方法时,事务如何传播和处理的策略。传播行为定义了一个方法应该如何参与现有的事务,或者是否应该启动新的事务。

组成部分

Spring支持多种传播行为,最常见的包括:
1.REQUIRED:如果当前存在事务,则加入该事务;如果没有事务,则创建一个新事务。
2.REQUIRES_NEW:总是创建一个新事务,当前事务(如果存在)将被挂起。
3.SUPPORTS:如果当前存在事务,则加入;如果没有事务,则以非事务方式执行。
4.NOT_SUPPORTED:总是以非事务方式执行,如果存在事务,则将其挂起。
5.MANDATORY:必须在一个现有事务中运行,如果没有现有事务则抛出异常。
6.NEVER:不能在事务中运行,如果当前存在事务则抛出异常。
7.NESTED:如果当前存在事务,则创建一个嵌套事务;如果没有事务,则与REQUIRED相同。

结构形式

不同的传播行为表示事务在执行链中的关系,有的需要新建事务,有的依赖现有事务。

分类

传播行为根据是否需要新建事务、依赖现有事务或者完全脱离事务环境

分为创建事务型、加入事务型、非事务型。

作用

传播行为决定了在不同场景下如何控制事务的开启、挂起或结束,从而保证数据的一致性和事务的正确性。

目的

传播行为的目的是确保在复杂的事务环境中,事务方法的调用能够按照预期的方式执行,尤其是在嵌套调用、并发调用或者分布式调用中确保事务的一致性。

基本原理

传播行为通过控制事务的开启、挂起或合并,实现了事务边界的灵活控制。