Spring事务传播机制类别详解是什么?

2026-05-28 06:511阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1232个文字,预计阅读时间需要5分钟。

Spring事务传播机制类别详解是什么?

这篇文章主要介绍了Spring事务传播行为的相关知识,包括各类传播方式的含义,并通过示例代码详细展示了其使用方法。对于想深入学习Spring事务或者正在工作中使用Spring框架的朋友,这篇文章具有一定的参考价值。需要的朋友可以参考学习。在Spring事务中,针对不同场景可以使用以下传播行为:

1. REQUIRED:这是默认的传播行为,如果当前没有事务在运行,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。

2.SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。

3.MANDATORY:如果当前存在事务,则加入该事务,如果当前没有事务,则抛出异常。

4.REQUIRES_NEW:新建事务,如果当前存在事务,则把当前事务挂起。

Spring事务传播机制类别详解是什么?

5.NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则把当前事务挂起。

6.NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。

7.NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则行为类似于REQUIRED。

通过以上介绍,希望对大家了解和使用Spring事务传播行为有所帮助。

这篇文章主要介绍了spring事物传播propagation类别含义详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在spring事务中针对注解transaction,我们在定义的时候会注明事物的传播类别,默认的是required。

  required:使用当前的事务,如果当前没有事务,则自己新建一个事务,子方法必须运行在一个事务,如果当前存在事务,则加入这个事务,成为一个整体。

  ex:领导没饭吃,我有钱,我自己买了自己吃;领导有饭吃,会分给我一起吃。

  supports:如果当前有事务,则使用事务;如果当前没有事务,则不使用事务。

  ex:领导没饭吃,我也没饭吃;领导有饭吃,我也有饭吃。

  mandatory:该传播必须存在一个事务,如果不存在则抛出异常。

  ex:领导必须管饭,不管饭没饭吃,我超级不开心,老子不干了(抛出异常)。

  requires_new:如果当前有事务,则挂起该事物,并且自己创建一个新的事务给自己使用;如果当前没有事务,则跟required一样

  ex:铃铛有饭吃,我看不上,不要,我自己买着自己吃。

  not_supported:如果当前有事务,则挂起事务,自己不使用事务去运行数据库操作。

  ex:领导有饭吃,分给我吃,我不要放一边,我不吃。

  never:如果当前事务存在,则抛出异常。

  ex:领导有饭吃,我不想吃,不想让领导也吃,我抛出异常。

  nested:如果当前有事务,则开启子事务(嵌套事务),嵌套事务式独立提交或者回滚;

     如果当前没有事务,则跟required一样;

     如果主事务提交,则会携带子事务一起提交;

     如果主事务回滚,则子事务会一起回滚。相反子事务异常,父事务可以回滚或者不会滚(try cache捕获了子事务的异常)。

     ex:领导决策不对。老板怪罪,带着小弟我一起受罪。小弟我出现差错,领导可以选择推卸责任或者帮我一起承担。

测试代码结构:

public void 主事务(领导) save(){   主事务save();   子事务1save();   子事务2save(); } //子事务注明事物的传播类型 public void 子事物1(我)save(){   save1();   1/0; //此处抛异常 } public void 子事务2(我)save(){   save2(); }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计1232个文字,预计阅读时间需要5分钟。

Spring事务传播机制类别详解是什么?

这篇文章主要介绍了Spring事务传播行为的相关知识,包括各类传播方式的含义,并通过示例代码详细展示了其使用方法。对于想深入学习Spring事务或者正在工作中使用Spring框架的朋友,这篇文章具有一定的参考价值。需要的朋友可以参考学习。在Spring事务中,针对不同场景可以使用以下传播行为:

1. REQUIRED:这是默认的传播行为,如果当前没有事务在运行,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。

2.SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。

3.MANDATORY:如果当前存在事务,则加入该事务,如果当前没有事务,则抛出异常。

4.REQUIRES_NEW:新建事务,如果当前存在事务,则把当前事务挂起。

Spring事务传播机制类别详解是什么?

5.NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则把当前事务挂起。

6.NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。

7.NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则行为类似于REQUIRED。

通过以上介绍,希望对大家了解和使用Spring事务传播行为有所帮助。

这篇文章主要介绍了spring事物传播propagation类别含义详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在spring事务中针对注解transaction,我们在定义的时候会注明事物的传播类别,默认的是required。

  required:使用当前的事务,如果当前没有事务,则自己新建一个事务,子方法必须运行在一个事务,如果当前存在事务,则加入这个事务,成为一个整体。

  ex:领导没饭吃,我有钱,我自己买了自己吃;领导有饭吃,会分给我一起吃。

  supports:如果当前有事务,则使用事务;如果当前没有事务,则不使用事务。

  ex:领导没饭吃,我也没饭吃;领导有饭吃,我也有饭吃。

  mandatory:该传播必须存在一个事务,如果不存在则抛出异常。

  ex:领导必须管饭,不管饭没饭吃,我超级不开心,老子不干了(抛出异常)。

  requires_new:如果当前有事务,则挂起该事物,并且自己创建一个新的事务给自己使用;如果当前没有事务,则跟required一样

  ex:铃铛有饭吃,我看不上,不要,我自己买着自己吃。

  not_supported:如果当前有事务,则挂起事务,自己不使用事务去运行数据库操作。

  ex:领导有饭吃,分给我吃,我不要放一边,我不吃。

  never:如果当前事务存在,则抛出异常。

  ex:领导有饭吃,我不想吃,不想让领导也吃,我抛出异常。

  nested:如果当前有事务,则开启子事务(嵌套事务),嵌套事务式独立提交或者回滚;

     如果当前没有事务,则跟required一样;

     如果主事务提交,则会携带子事务一起提交;

     如果主事务回滚,则子事务会一起回滚。相反子事务异常,父事务可以回滚或者不会滚(try cache捕获了子事务的异常)。

     ex:领导决策不对。老板怪罪,带着小弟我一起受罪。小弟我出现差错,领导可以选择推卸责任或者帮我一起承担。

测试代码结构:

public void 主事务(领导) save(){   主事务save();   子事务1save();   子事务2save(); } //子事务注明事物的传播类型 public void 子事物1(我)save(){   save1();   1/0; //此处抛异常 } public void 子事务2(我)save(){   save2(); }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。