Spring的事务传播行为

时间:2022-07-24
本文章向大家介绍Spring的事务传播行为,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Spring的事务传播行为

一. 定义

Spring定义了7中事务的传播行为,在TransactionDefinition类中:

public interface TransactionDefinition {

  int PROPAGATION_REQUIRED = 0;

  int PROPAGATION_SUPPORTS = 1;

  int PROPAGATION_MANDATORY = 2;

  int PROPAGATION_REQUIRES_NEW = 3;

  int PROPAGATION_NOT_SUPPORTED = 4;

  int PROPAGATION_NEVER = 5;

  int PROPAGATION_NESTED = 6;
}

二. 含义

是否支持事务

行为

是否抛出异常

是否默认

PROPAGATION_REQUIRED

如果当前线程中存在事务,则使用当前事务,否则创建新事务。

PROPAGATION_SUPPORTS

如果当前线程中存在事务,则使用当前事务,否则以非事务方式执行。

PROPAGATION_MANDATORY

强制使用当前事务,如果当前线程中不存在事务,则抛出异常。

PROPAGATION_REQUIRES_NEW

每次创建新事务,如果当前已经存在事务,则将当前事务挂起。

PROPAGATION_NOT_SUPPORTED

不支持当前事务,始终以非事务方式执行。

PROPAGATION_NEVER

不支持当前事务,如果当前存在事务,则抛出异常。

PROPAGATION_NESTED

如果当前存在事务,则以嵌套事务的方式执行,否则行为与PROPAGATION_REQUIRED相同。