当前位置:首页 > 数码 > 事务传播行为-Spring-七种类型一览 (spring事务传播行为)

事务传播行为-Spring-七种类型一览 (spring事务传播行为)

admin7个月前 (04-14)数码41

简介

Spring 事务传播性是指在 Spring 环境中,当多个包含事务的方法嵌套调用时,每个事务方法如何处理事务上下文中的提交或回滚行为。

传播性行为

Spring 中定义了 7 种事务传播性行为,分为以下三类:

支持当前事务

REQUIRED:如果当前方法已在事务内,则在该事务中执行,否则开启一个新事务。 REQUIRES_NEW:开启一个新事务,无论当前是否有事务上下文。 NESTED:如果当前存在事务上下文,则在嵌套事务中执行。

不支持当前事务

NOT_SUPPORTED:挂起当前事务并以非事务方式执行。 NEVER:抛出异常,不允许在事务中执行。 Spring

嵌套事务

MANDATORY:必须在事务中执行,否则抛出异常。 SUPPORTS:如果当前方法在事务内,则在该事务中执行,否则不开启事务。

传播性工作原理

REQUIRED

默认传播性行为。 嵌套事务:所有事务方法都合并到同一事务中,同时提交或回滚。 异常处理:任何事务方法抛出的异常都会回滚整个事务。

REQUIRES_NEW

始终开启一个新事务。 事务独立:新事务独立于当前事务,互不干扰。 异常处理:每个事务单独处理异常,不会影响其他事务。

NOT_SUPPORTED

挂起当前事务。 非事务执行:方法以非事务方式执行,不受事务上下文的影响。

NEVER

不允许在事务中执行。 异常处理:如果当前存在事务上下文,则抛出异常。

嵌套事务

MANDATORY 和 SUPPORTS:与 REQUIRED 和NOT_SUPPORTED 类似,但允许嵌套事务。 异常处理:嵌套事务中的异常只回滚嵌套事务,不影响外部事务。

使用场景

不同的事务传播性适用于不同的场景: REQUIRED:大多数业务场景,确保所有操作都在同一个事务中。 REQUIRES_NEW:需要隔离的独立操作,如多个并发事务的处理。 NOT_SUPPORTED:只需要非事务安全方法,如查询操作。 NEVER:不允许在事务中执行的方法,如数据库表结构修改操作。 MANDATORY:必须在事务中执行的方法,如资金转账。 SUPPORTS:可以适应当前事务或非事务环境,无需特殊处理。

Spring事务管理的三个核心接口

Spring事务管理接口:PlatformTransactionManager、TransactionDefinition和TransactionStatusSpring的事务管理是基于 AOP 实现的,而 AOP 是以方法为单位的。 Spring 的事务属性分别为传播行为、隔离级别、只读和超时属性,这些属性提供了事务应用的方法和描述策略。 在JavaEE 开发经常采用的分层模式中,Spring 的事务处理位于业务逻辑层,它提供了针对事务的解决方案。 在 Spring 解压包的 libs 目录中,包含一个名称为 的文件,该文件是 Spring 提供的用于事务管理的 JAR 包,其中包括事务管理的三个核心接口:PlatformTransactionManager、TransactionDefinition 和 TransactionStatus。 将该 JAR 包的后缀名 jar 改成 zip 的形式后,解压压缩包,进入解压文件夹中的 \org\springframework\transaction 目录后,该目录中的文件如图 1 所示。 图 1事务管理核心接口 在图 1 中,方框所标注的三个文件就是本节将要讲解的核心接口。 这三个核心接口的作用及其提供的方法如下。 PlatformTransactionManager 接口是 Spring 提供的平台事务管理器,用于管理事务。 该接口中提供了三个事务操作方法,具体如下。 在项目中,Spring 将 xml 中配置的事务详细信息封装到对象 TransactionDefinition 中,然后通过事务管理器的 getTransaction() 方法获得事务的状态(TransactionStatus),并对事务进行下一步的操作。 TransactionDefinition 接口是事务定义(描述)的对象,它提供了事务相关信息获取的方法,其中包括五个操作,具体如下。 在上述五个方法的描述中,事务的传播行为是指在同一个方法中,不同操作前后所使用的事务。 传播行为的种类如表 1 所示。 表 1 传播行为的种类 在事务管理过程中,传播行为可以控制是否需要创建事务以及如何创建事务。 通常情况下,数据的查询不会改变原数据,所以不需要进行事务管理,而对于数据的增加、修改和删除等操作,必须进行事务管理。 如果没有指定事务的传播行为,则 Spring3 默认的传播行为是 required。 TransactionStatus 接口是事务的状态,它描述了某一时间点上事务的状态信息。 其中包含六个操作,具体如表 2 所示。 表 2事务的操作

事务传播的七种方式

事务传播的七种方式有新闻发布会、微信公众号、电视广告、社交媒体、邮件营销、口碑营销、人际传播。

1、新闻发布会。

新闻发布会是通过传统媒体和网络媒体来宣传事务的一种方式,适用于对外宣传大型会议、重要决策、重要人事任免等,并且能够吸引关注和提高话题度。

2、微信公众号。

微信公众号是近年来广泛被应用于企业事务传播的渠道之一,通过微信公众号的文章、图文、视频等各种形式,能够有效地传达信息并与受众互动。

3、电视广告。

电视广告以其视觉和听觉效果,吸引观众对品牌和事务的关注度,是一种广泛应用在宣传事务中的方式。通过电视广告,可以使目标受众对事务有更深刻的认识和理解。

4、社交媒体。

众所周知,社交媒体已成为人们获得信息和交流的重要平台。通过社交媒体(如Facebook、Twitter、Instagram等)发布私人和企业账号,可以让更多的人了解您的事件,并希望它在全球范围内传播。

5、邮件营销。

邮件营销是一种低成本获得大量信息传播的方式。通过邮件将事务信息传至目标受众手中,是一种常用的邮件营销方式。

6、口碑营销。

口碑营销是目前许多品牌和企业首选的一种方式。通过让顾客代言或讨论品牌,这种方式可以引起其他人的兴趣并增加对事件的认知度和信任度。

7、人际传播。

虽然目前互联网和电子渠道发达,但人际传播仍然是一种极具影响力的传播方式,它有三个特点:有效性、实时性和情感性。在人际传播中,专业的市场营销人员通过面对面的交流,或建立产品的口碑和信誉,使得产品得到消费者愿意购买并产生。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Spring

“事务传播行为-Spring-七种类型一览 (spring事务传播行为)” 的相关文章

如何在Spring名目中顺利性能MP-MyBatis (如何在springer上下载文献)

如何在Spring名目中顺利性能MP-MyBatis (如何在springer上下载文献)

在Spring名目中集成MP,须要启动以下性能: 1.引入依赖:在名目标pom.xml文件中参与MP相关依赖,例如:```xml<dependency><groupId&g...

b-b-核心原理拆解与源码分析-2.0-Spring-Boot-深度实践 (核心b类期刊有哪些)

b-b-核心原理拆解与源码分析-2.0-Spring-Boot-深度实践 (核心b类期刊有哪些)

SpringBoot是一个基于Spring的轻量级框架,它简化了Spring应用程序的创建过程,使得开发者能够快速搭建一个可运行的应用程序。随着SpringBoot2.0版本的发布,其功能和性能得...

Boot-Spring-与-3.0-加速应用性能的完美融合-GraalVM (bootstrap)

Boot-Spring-与-3.0-加速应用性能的完美融合-GraalVM (bootstrap)

在 2023 年,SpringBoot 3.0 的发布标志着 Spring 框架对 GraalVM 的全面支持。此支持对 Spring 技术栈来说是一项重大补充。 GraalVM 概述...

6-Spring-提供的四种弱小工具-远程接口调用神器 (6sp日常使用还能用多久)

6-Spring-提供的四种弱小工具-远程接口调用神器 (6sp日常使用还能用多久)

1.引见 Spring6是一个十分弱小的框架,它提供了许多工具和接口来简化远程接口调用。其中,WebClient、RestTemplate、HTTPInterface和RestClient是...

Spring-Webflux-Boot-虚构线程性能逊色于-深化比较 (springboot)

Spring-Webflux-Boot-虚构线程性能逊色于-深化比较 (springboot)

早上看到一篇关于SpringBoot虚构线程和Webflux性能对比的文章,感觉还不错。内容较长,抓重点给大家引见一下这篇文章的外围内容,繁难大家极速浏览。 测试场景 作者驳回了一个尽...

Spring-Boot-Starter原理详解-b-b (springernature)

Spring-Boot-Starter原理详解-b-b (springernature)

SpringBoot Starter 是一种包含了一组特定功能和依赖关系的依赖项,旨在为特定的应用程序场景提供快速集成和开箱即用的功能。主要用于将常用的功能模块打包成一个可重用的依赖项,开发者只需...

容器启动有效的交互-Spring-如何利用-框架提供的才干-让-Bean-深化了解并与-Spring (容器启动过程)

容器启动有效的交互-Spring-如何利用-框架提供的才干-让-Bean-深化了解并与-Spring (容器启动过程)

Spring有一个特点,就是创立进去的Bean对容器是无感的,一个Bean是怎样样被容器从一个Class整成一个Bean的,关于Bean自身来说是不知道的,当然也不须要知道,也就是Bean对容器的...

使用Spring-Cloud和Java构建强大而灵活的微服务-十个实践案例 (使用spring框架的好处是什么)

使用Spring-Cloud和Java构建强大而灵活的微服务-十个实践案例 (使用spring框架的好处是什么)

在使用构建微服务时,许多人认为只要学习一些微服务设计模式就足够了,比如 CQRS、SAGA 或每个微服务一个数据库。虽然这是正确的,但同时学习一些通用的最佳实践也是很有意义的。本文分享一些最佳实践...