zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【项目实战】Spring事务传播行为

Spring项目事务 实战 行为 传播
2023-09-14 09:04:55 时间

一、事务传播

事务传播是指事务与其他事务交互时的行为。

二、Spring中七种不同的传播行为

在Spring中,有七种不同的传播行为可用:

序号传播行为解释
1REQUIRED如果存在事务,则当前方法将在该事务内运行。如果不存在事务,则将创建一个新事务。
2SUPPORTS如果存在事务,则当前方法将在该事务内运行。如果不存在事务,则该方法将在没有事务的情况下运行。
3MANDATORY如果存在事务,则当前方法将在该事务内运行。如果不存在事务,则会抛出异常。
4REQUIRESNEW无论事务是否已存在,都将为当前方法创建一个新事务。
5NOTSUPPORTED当前方法将始终在没有事务的情况下运行,而不管事务是否已存在。
6NEVER当前方法将始终在没有事务的情况下运行。如果存在事务,则会抛出异常。
7NESTED如果存在事务,则当前方法将在该事务内运行。如果不存在事务,则将创建一个新事务。但是,新事务将嵌套在现有事务中。

三、如何使用@Transactional注释指定事务的传播行为

要在Spring中指定事务的传播行为,我们可以使用@Transactional注释。
例如,如果想使用REQUIRED传播行为,我们可以像这样注释我们的方法:
这将确保该方法在现有事务中运行,如果存在事务,则创建一个新事务。

@Transactional(propagation = Propagation.REQUIRED)
public void myMethod() {
    // method logic here
}