Spring---事务传播

2人阅读 评论(0) 收藏 举报
分类:

概述

出现场景:当一个service的方法中需要使用其他service的方法时,当两个方法都有事务时,就会出现事务的传播问题。

传播属性 描述
REQUIRED 如果有一个事务正在运行,当前的方法就在该事务中执行,否则就开启一个新事务,并且在自己的事务中运行。
REQUIRED_NEW 当前的方法必须开启一个新事务,并且在自己的事务中运行,如果有其他事务正在运行,则将正在运行的事务挂起。
SUPPORTS 如果有事务正在运行,则此方法就运行在该事务中,否则此方法可以不运行在事务中。
NOT_SUPPORTED 当前的方法不可以运行在事务中,如果有事务正在运行,则将正在运行的事务挂起。
MANDATORY 当前的方法必须运行在事务中,如果没有正在运行的事务,则抛出异常
NEVER 当前方法不能够运行在事务中,如果有事务正在运行,就抛出异常
NESTED 如果有事务正在运行,则此方法就在正在运行事务的嵌套事务内运行,否则,就启动新的事务,在新事务中运行

事务的异常

异常描述 结果
默认异常回退 RuntimeException和Error会回退事务,Exception会提交事务,可以使用@Transactional的rollbackFor属性来设置具体需要回退的异常类型,以及noRollbackFor来设置不回退事务的类型
内部事务出现异常 内部事务回退,外部事务方法捕获内部异常,则外部事务可以提交
外部事务出现异常 外部事务回退,则内部事务全部回退

底层通过设置事务保存点savePoint(savePoint)来实现事务的回退位置

查看评论

Spring事务传播属性

  • 2011年07月22日 10:08
  • 868B
  • 下载

SPRING事务传播特性&事务隔离级别

  • 2012年08月24日 17:59
  • 47KB
  • 下载

浅析Spring 事务(二十一) spring事务的传播行为

经过我们上面一个章节的初步了解,我们已经知道了Spring事务的基本配置,今天我们一起接着讨论一下spring事务的传播...
  • linuu
  • linuu
  • 2016-03-29 16:07:34
  • 3845

Spring中事务传播行为种类

Spring在TransactionDefinition接口中规定了7种类型的事务传播行为, 它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 事务传播行为类型 ...
  • huaishuming
  • huaishuming
  • 2015-09-16 12:28:43
  • 1286

Spring事务传播特性解析

  • 2013年11月05日 01:00
  • 8.2MB
  • 下载

Spring的7种事务传播行为类型

1、PROPAGATION_REQUIRED :如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。 2、PROPAGATION_SUPPORTS:支持当前事务,...
  • hsgao_water
  • hsgao_water
  • 2016-10-19 16:50:34
  • 8331

spring事务传播

  • 2012年08月28日 12:55
  • 12KB
  • 下载

Spring事务传播特性实例解析

背景介绍         目前系统正在进行代码重构前期预研工作,目标采用spring控制事务以减少开发代码量,提高开发效率。同时避免开发人员编码控制事务所带来的链接没有释放,事务没有提交,出现异常事务...
  • lb85858585
  • lb85858585
  • 2013-11-05 01:08:52
  • 27198

【Spring学习34】Spring事务(4):事务属性之7种传播行为

事务传播行为什么叫事务传播行为?听起来挺高端的,其实很简单。 即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。事务传播行为(propagation behavior)指的就是...
  • soonfly
  • soonfly
  • 2017-04-20 21:35:42
  • 1165

spring 默认事务传播属性

PROPAGATION_REQUIRED
  • AlbertFly
  • AlbertFly
  • 2016-09-27 17:37:17
  • 2060
    个人资料
    持之以恒
    等级:
    访问量: 6786
    积分: 601
    排名: 8万+