Spring事务的七种传播行为
目录
- 一、什么是事务传播行为
- 二、事务的传播行为有哪些?
一、什么是事务传播行为
什么叫事务传播行为?听起来挺高端的,其实很简单。
即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。
所为的事务传播行为就是多个声明的事务的方法 相互调用的时候,这个事务该如何传递
如上图:methodA()
调用methodB()
那么这两个方法都显示了开启事务,那么methodB()
开启一个新的事务,还是继续在methodA()
这个事务里面去执行,就去决所谓的事务传播的一个行为
二、事务的传播行为有哪些?
Spring中定义了七种事务的传播行为,完整版的传播行为如下:
REQUIRED(默认)
:它是Spring里面默认的事务传播行为,也就新当前存在事务就加入到当前事务去执行,如果不存在事务就创建一个事务REQUIRE_NEW
:它不管是否存在事务,它都会新开启一个事务来执行,新老事务相互独立的,外部事务抛出异常,并不会影响内部事务的一个正常提交NESTED
:如果当前存在事务,就嵌套当前事务中去执行,如果当前没有事务,那么就新建一个事务,类似REQUIRE_NEW
这个样一个传播行为SUPPORTS
:表示支持当前当前的事务,如果当前不存在事务,就以非事务的方式去执行NOT_SUPPORT
:表示以非事务的方式来运行,如果当前存在事务,就需要把当前的事务挂起来。MANDATORY
:它是一个强制的事务执行,如果当前不存在事务就抛出一个异常NEVER
:就是以非事务的方式来执行,如果当前存在事务则抛出一个异常
Spring的事务传播级别一般是不需要去定义的,默认就是 REQUIRED
,除非在嵌套的事务情况下,需要去重点了解
到此这篇关于Spring事务的七种传播行为的文章就介绍到这了,更多相关Spring事务传播行为内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
深入理解Spring的事务传播行为
前言 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为.事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为.这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利.但是人们对他的误解也颇多,你一定也听过"service方法事务最好不要嵌套"的传言.要想正确的使用工具首先需要了解工具.本文对七种事务传播行为做详细介绍,内容主要代码示例的方式呈现. 基础概念 1. 什么是事务传播行
-
Spring事务传播行为问题解决
这篇文章主要介绍了Spring事务传播行为问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.简介 Spring事务配置及相关说明详见:https://www.jb51.net/article/177710.htm.这里说明spring事务的几点注意: 1.默认只会检查回滚RuntimeException的异常. 2.@Transactional注解只能作用于public的方法上,默认传播行为 Propagation.REQUIRED
-
浅谈Spring事务传播行为实战
Spring框架提供了事务管理的标准实现,且可以通过注解或者XML文件的方式声明和配置事务. 通过异步事件的方式解耦服务调用,可以提高程序的响应速度,并且避免因为事务传播行为而导致的事务问题. 本文以一个电商平台包裹出库的业务为实际背景,通过异步事件与线程池的方式解耦嵌套事务,提高程序并发性能:为了便于问题的分析和方案的理解,同时还讲解了Spring的事务管理,并着重介绍了几种不同的事务传播行为. 事务小贴士 什么是事务呢?简单来讲事务就是逻辑上的一组操作,这些操作要么都执行,要么都不执行. 什
-
Spring中事务传播行为的介绍
传播行为定义关于客户端和被调用方法的事务边界.Spring定义了7种截然不同的传播行为. 1,PROPAGATION_MANDATORY,表示该方法必须运行在一个事务中.如果当前没有事务正在发生,则抛出异常. 2,PROPAGATION_NESTED,表示如果当前有一个事务正在运行当中,则该方法应该运行在一个嵌套事务中.被嵌套的事务可以独立于封装事务进行提交或回滚.如果封装事务不存在,则行为就像PROPAGATION_REQUIRED一样. 3,PROPAGATION_NEVER,表示当前方法不
-
深入理解Spring事务的传播行为
前言 本文主要介绍下Spring事务中的传播行为.事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为.这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利. 下面话不多说了,来一起看看详细的介绍吧 事务传播行为介绍 Spring中的7个事务传播行为: |事务行为|说明 | |:--|:--| |PROPAGATION_REQUIRED | 支持当前事务,假设当前没有事务.就新建一个事务 | | PROPAGATION_SUPP
-
关于spring事务传播行为非事务方式的理解
目录 spring事务传播行为非事务方式 Spring事务理解和配置 1 Spring事务 1.1 事务简介 1.2 事务的传播行为 1.3 编程式事务(需要手动写代码,了解) 1.4 声明式事务(xml配置) 1.5 声明式事务(注解) spring事务传播行为非事务方式 具体的隔离级别可以看看搜一下,相关的博客挺多的,现在说一下对传播行为 PROPAGATION_NOT_SUPPORTED.PROPAGATION_NEVER中很多解释为 非事务方式运行 的理解. 关于什么是'非事务方式
-
Spring中的事务传播行为示例详解
一.背景介绍 Spring 框架应该是每一个人 javaer 都必须接触和学习的技术,Spring 公司所提供的各种框架是 Java 开发行业可参考的重要标准之一. Spring 中有 7 种类型的事务传播行为.事务传播行为是 Spring 框架提供的一种事务管理方式,它是 Spring 框架之中非常重要的一个技术点,毕竟事务关系到应用程序和数据库的交互,而数据更是互联网行业最为重要的资源. 平时开发过程中事务都会有使用,但是没有真正地总结过,尤其是事务中嵌套事务的场景,此篇基础知识文在此做一个
-
Spring事务的七种传播行为
目录 一.什么是事务传播行为 二.事务的传播行为有哪些? 一.什么是事务传播行为 什么叫事务传播行为?听起来挺高端的,其实很简单.即然是传播,那么至少有两个东西,才可以发生传播.单体不存在传播这个行为.所为的事务传播行为就是多个声明的事务的方法 相互调用的时候,这个事务该如何传递 如上图:methodA()调用methodB()那么这两个方法都显示了开启事务,那么methodB()开启一个新的事务,还是继续在methodA()这个事务里面去执行,就去决所谓的事务传播的一个行为 二.事务的传播行为
-
spring事务隔离级别、传播机制以及简单配置方式
一.spring支持的事务声明方式 1. 编程式事务 当系统需要明确的,细粒度的控制各个事务的边界,应选择编程式事务. 2. 声明式事务 当系统对于事务的控制粒度较粗时,应该选择申明式事务,通过<tx>标签和<aop>切面形式在xml中进行配置. 3. 无论你选择上述何种事务方式去实现事务控制,spring都提供基于门面设计模式的事务管理器供选择,如下是spring事务中支持的事务管理器 事务管理器实现(org.springframework.*) 使用时机 jdbc.dataso
-
Spring事务失效的各种场景(13种)
目录 一.访问权限 二.方法用final修饰 三.方法内部调用 四.没有被spring管理 五.多线程调用 六.设计的表不支持事务 七.没有开启事务 八.错误的事务传播 九.自己捕获了异常 十.手动抛出别的异常 十一.自定义回滚异常 十二.嵌套事务回滚过头 十三.编程式事务 一.访问权限 Java的访问权限主要是:private.default.protected.public,它们的权限则是依次变大.如果我们在开发的时候定义错误的访问权限,就会导致事务出现问题 @Service public
-
Spring事务传播中嵌套调用实现方法详细介绍
目录 前言 7种传播方式 注解式事务 事务的方法之间的调用 注意事项 前言 最近在使用Spring框架时遇到了一些问题,主要是Spring的事务传播问题,一个不带事务的方法调用带事务的方法,有时候会出现不回滚的情况,所以写了这篇文章来记录一下. 7种传播方式 我们先来看Spring事务的7中传播方式以及对应的描述 属性名称 值 描述 PROPAGATION__REQUIRED REQUIRED 表示的是当前这个方法必须运行在一个事务环境中,如果当前方法已经处于事务环境中,就可以直接使用该方法,否
-
Spring框架事务属性中事务隔离级别与传播行为全面讲解
目录 一.事务隔离级别 ①介绍 ②使用方式 二.事务传播行为 ①介绍 ②测试 一.事务隔离级别 ①介绍 数据库系统必须具有隔离并发运行各个事务的能力,使它们不会相互影响,避免各种并发问题.一个事 务与其他事务隔离的程度称为隔离级别.SQL标准中规定了多种事务隔离级别,不同隔离级别对应不同 的干扰程度,隔离级别越高,数据一致性就越好,但并发性越弱. 隔离级别一共有四种: 读未提交:READ UNCOMMITTED 允许Transaction01读取Transaction02未提交的修改. 读已提交
-
Spring事务管理原理及方法详解
这篇文章主要介绍了Spring事务管理原理及方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 事务,在日常开发或者面试中都必定会涉及到.开发工作中,结合数据库开发理解就是:一组dml要么全部成功执行提交,要么因为某一个操作异常,撤销之前所做的成功的操作,整体执行失败.再简单点的一句话:生死与共. 由此,可以看出,事务的必要性:在开发工作中,保证操作数据的安全性.事务的控制也就是保证数据的访问安全性. 一.事务的四大特性 A:原子性(ato
-
Spring事务失效问题分析及解决方案
这篇文章主要介绍了Spring事务失效问题分析及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 隔离级别 在 TransactionDefinition.java 接口中,定义了"四种"的隔离级别枚举: /** * [Spring 独有]使用后端数据库默认的隔离级别 * * MySQL 默认采用的 REPEATABLE_READ隔离级别 * Oracle 默认采用的 READ_COMMITTED隔离级别 */ int ISOL
-
带大家深入了解Spring事务
一.数据库事务简介 构成单一逻辑工作单元的操作集合称作事务(transaction).即使有故障,数据库系统也必须保证事务的正确执行--要么执行整个事务,要么属于该事务的操作一个也不执行.以资金转账为例,应该保证支票账户支出金额的操作和储蓄账户的存入金额的操作在同一个逻辑工作单元内完成.简言之,事务是访问并可能更新各种数据项的一个程序执行单元(unit). 二.事务的特性 数据库需要维护事务的以下四个性质: 1.原子性(Atomicity)事务是一个原子操作,由一系列动作组成.事务的原子性确保这
-
8个Spring事务失效场景详解
目录 前言 Spring事务原理 Spring事务失效场景 1. 抛出检查异常 2. 业务方法本身捕获了异常 3. 同一类中的方法调用 4. 方法使用 final 或 static关键字 5. 方法不是public 6. 错误使用传播机制 7. 没有被Spring管理 8. 多线程 总结 前言 作为Java开发工程师,相信大家对Spring种事务的使用并不陌生.但是你可能只是停留在基础的使用层面上,在遇到一些比较特殊的场景,事务可能没有生效,直接在生产上暴露了,这可能就会导致比较严重的生产事故.
-
Spring事务管理的使用细则浅析
目录 Spring 事务管理接口 1.事务管理器接口 PlatformTransactionManager 2.事务定义接口 TransactionDefinition Spring 事务管理的实现方法 1.没有事务管理的情况分析 2.通过配置 XML 实现事务管理 3.利用注解实现事务管理 4.在业务层实现事务管理 事务(Transaction)是访问数据库的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单元.通过事务,数据库能将逻辑相关的一组操作绑定在一起,以便保持数据
随机推荐
- seajs中模块依赖的加载处理实例分析
- 详解angular element()方法使用
- Sql中存储过程的定义、修改和删除操作
- Access2000迁移到Oracle9i要点
- jQuery实现删除li节点的方法
- Bootstrap实现弹性搜索框
- Bootstrap轮播插件使用代码
- 写出高质量的PHP程序
- Python文本相似性计算之编辑距离详解
- JavaScript 经典实例日常收集整理(常用经典)
- JS之Date对象和获取系统当前时间详解
- c语言 跳台阶问题的解决方法
- firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
- js常见表单应用技巧
- DSP中浮点转定点运算--浮点数的存储格式
- C语言数据结构之循环链表的简单实例
- 获取WebService的请求信息方法实例
- vue-music关于Player播放器组件详解
- js实现点击按钮复制文本功能
- Python直接赋值、浅拷贝与深度拷贝实例分析