Spring中的事务传递性小记

在Spring中,事务的传递性主要由Propagation属性控制,它定义了当方法被其他方法调用时,应该如何处理事务。Propagation属性有以下几种值:

  1. PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中,这是最常见的选择。
  2. PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
  3. PROPAGATION_MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。
  4. PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
  5. PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
  6. PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
  7. PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。

下面是一个使用Java配置的例子:

import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;public class UserService {@Transactional(propagation = Propagation.REQUIRED)public void registerUser(User user) {// 业务逻辑saveUser(user);saveUserLog(user);}@Transactional(propagation = Propagation.REQUIRES_NEW)private void saveUser(User user) {// 保存用户信息}@Transactional(propagation = Propagation.SUPPORTS)private void saveUserLog(User user) {// 保存用户日志}
}

在这个例子中,registerUser方法使用了REQUIRED传播级别,如果在调用registerUser时存在一个事务,那么这个方法将在相同的事务中运行,否则将开始一个新的事务。

saveUser方法使用了REQUIRES_NEW传播级别,这将总是创建一个新的事务,即使在调用它的方法已经在它自己的事务中运行。

saveUserLog方法使用了SUPPORTS传播级别,这意味着如果当前存在事务,那么该方法将在该事务中运行,但如果当前没有事务,那么该方法将以非事务方式运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊一聊资源监控

聊一聊资源监控 为什么要进行资源监控? 为什么在稳定性测试的时候需要进行相应的资源监控呢?简单来说因为我们需要知道在程序运行的时候能够主动观察到资源的消耗情况以便及时发现问题 怎么进行监控? 目前我们常用对资源的监控可以分为如…

Spring Boot 项目打包 + Shell 脚本部署详细总结

Spring Boot 项目打包 Shell 脚本部署详细总结 在现代企业应用开发中,Spring Boot项目的自动化部署是一个非常重要的环节。通过自动化部署,我们可以减少人为操作带来的错误,提高部署效率和可靠性。本文将详细介绍如何将Spring Boot项目打包…

为什么C#越学越陌生,搞那么多奇怪的东西?

绝大多数编程语言,除了基础语法,其他的都是可选的工具,可用可不用,顺手你就用,不顺手就别用。 刚好我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点…

啥是多边央行数字货币桥项目(个人技术理解)

(1)是啥:是基于CBDC(央行发行的电子货币)的跨境支付互联互通的一种尝试,是点对点的交易。交易时商业银行作为同步节点(点对点转账中的点),央行作为共识节点(点…

vue3第三十八节(TS 之 class 类实现及使用)

引言:面相对象编程在我们工作中必须同时也是不可或缺的一部分,想要对JavaScript | TypeScript 有更加深刻的理解应用,我们需要充分学习应用 1、类的基本用途 在TS中 类描述了所创建的对象共同的属性和方法。TypeScript 支持面向对象的所有特…

钉钉二次开发-企业内部系统集成官方OA审批流程

场景:企业内部开发人员不足,需要从以前集成Activiti的方式转换成集成钉钉官方OA审批流程,提高开发效率和系统稳定性。 摘要:企业内部系统集成Acitiviti开源工作流存在的问题: 1. 企业需要单独搭建工作流服务&#xff…

服务器数据恢复—强制上线raid5阵列离线硬盘导致raid不可用的数据恢复案例

服务器数据恢复环境: 某品牌2850服务器中有一组由6块SCSI硬盘组建的raid5磁盘阵列,linux操作系统ext3文件系统。 服务器故障: 服务器运行过程中突然瘫痪。服务器管理员检查阵列后发现raid5阵列中有两块硬盘离线,将其中一块硬盘进行…

2种方法!一键批量下载1688主图、sku图、视频和详情页

最近关于如何一键下载1688主图、sku图、视频和详情页相关的问题被商友们问爆了。店雷达直接上实操教程,建议收藏,不迷路! 方法一:通过选品中心下载 1、在店雷达选品中心(如果想在1688进货的就在1688选品库中选品&…

视频监控管理平台LntonCVS视频汇聚平台充电桩视频监控应用方案

随着新能源汽车的广泛使用,公众对充电设施的安全性和可靠性日益重视。为了提高充电桩的安全管理和站点运营效率,LntonCVS公司推出了一套全面的新能源汽车充电桩视频监控与管理解决方案。 该方案通过安装高分辨率摄像头,对充电桩及其周边区域进…

Python中zip函数的奥秘与运用

Python中zip函数的奥秘与运用 在Python的编程世界中,zip函数如同一把神秘而强大的钥匙,能够开启数据处理的新境界。它的功能看似简单,但深入探究后,你会发现其中蕴含的奥秘与运用之广泛,足以让人惊叹。 四个方面&…

html5实现端午节网站源码

文章目录 1.设计来源1.1 端午首页页面1.2 端午由来页面1.3 端午图集页面1.4 端午活动页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/139524377 ht…

MYTED | TED100篇打卡总结 辅助学习网站使用说明

文章目录 📚背景🐇timeline🐇版本记录🐇产出小结 📚功能说明🐇左侧🐇中间🐇右侧 📚背景 🐇timeline 在一个平常的下午,一次平常的桌面整理&#…

软考对进入事业编的人有帮助吗?

首先肯定的说,软考是可以用来评职称的。 但是, 这取决于你所在公司的性质和工作岗位。 软考全国统一实施后,不再进行计算机技术与软件相应专业和级别的专业技术职务任职资格评审工作。计算机软件资格考试既是职业资格考试,又是…

代理记账公司的标准,理解并遵循业务流程和道德规范

代理记账公司的存在是为了帮助企业管理和报告他们的财务信息,他们为企业的各种交易提供会计服务,并确保企业遵守所有相关的法规和准则,这些公司需要严格地符合一些标准以维持良好的声誉和服务质量。 代理人必须拥有适当的证书和执照&#xff…

硬光敏的程序实现

硬光敏的程序实现通常涉及到使用物理光敏元件,如光敏电阻或光敏二极管,来检测环境光照强度。然后,根据检测到的光照强度来控制其他设备,例如补光灯或摄像头的红外滤镜。以下是一个简化的硬光敏程序实现的示例流程,使用…

迅为RK3562开发板ARM四核A53核心板瑞芯微国产人工智能Linux安卓

iTOP-3562开发板采用瑞芯微RK3562处理器,内部集成了四核A53Mali G52架构,主频2GHZ,内置1TOPSNPU算力,RK809动态调频。支持OpenGLES1.1/2.0/3.2、0penCL2.0、Vulkan 1.1内嵌高性能2D加速硬件。 内置独立NPU, 算力达 1TOPS,可用于轻…

浅谈IDEA中项目如何进行热部署

文章目录 一、什么是热部署?二、配置过程2.1、社区版IDEA2.2、专业版IDEA 一、什么是热部署? 热部署:当代码修改时,IDEA自动帮忙重新加载项目,无需手动加载。 二、配置过程 2.1、社区版IDEA 1、添加热部署框架 &l…

监控易监测对象及指标之:全面监控神通数据库

随着企业信息化建设的不断深入,数据库作为存储和管理核心数据的关键基础设施,其稳定性和性能直接关系到业务的连续性和企业的运营效率。神通数据库作为国产数据库的一种,因其出色的性能和稳定性而受到了广泛关注。 为了确保神通数据库的稳定运…

Docker 学习总结(83)—— 配置文件daemon.json介绍及优化建议

一、daemon.json 文件概述 daemon.json是Docker守护进程的配置文件,它允许系统管理员自定义Docker守护程序的行为。此文件通常位于/etc/docker/目录下。通过修改daemon.json,可以调整Docker守护进程的多种设置,包括网络配置、日志记录、存储驱动等。 二、daemon.json 文件结…

PyTorch交叉熵理解

PyTorch 中的交叉熵损失 CrossEntropyLoss PyTorch 中使用CrossEntropyLoss 计算交叉熵损失,常用于分类任务。交叉熵损失衡量了模型输出的概率分布与实际标签分布之间的差异,目标是最小化该损失以优化模型。 我们通过一个具体的案例来详细说明 CrossE…