当前位置: 首页 > news >正文

系列四十五、Spring的事务传播行为案例演示(五)#MANDATORY

一、演示Spring的传播行为(MANDATORY)

1.1、StockServiceImplMANDATORY 

/*** @Author : 一叶浮萍归大海* @Date: 2023/10/30 15:43* @Description: 演示MANDAORY的传播行为*      外部不存在事务:抛出异常 No existing transaction found for transaction marked with propagation 'mandatory'*      外部存在事务:融合到外部的事务*      要求外部方法必须有事务*/
@Service(value = "stockServiceImplMANDATORY")
public class StockServiceImplMANDATORY extends ServiceImpl<StockMapper, StockDO> implements StockService {@Resourceprivate StockMapper stockMapper;@Resourceprivate IntegralService integralServiceImplMANDATORY;/*** MANDAORY的传播行为* @param id* @param num* 场景一:外部不存在事务(注释掉reduceStock的@Transactional注解),内部存在事务(传播属性为MANDATORY)*      预期结果:抛异常*      实际结果:外部普通方法正常执行,内部事务方法回滚*      对应方法:m1()** 场景二:外部存在事务(REQUIRED),内部存在事务(MANDATORY)*      预期结果:外部事务 & 内部事务都回滚*      实际结果:外部事务 & 内部事务都回滚*      对应方法:m1()* ...*/@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)@Overridepublic void reduceStock(Long id, Integer num) {m1(id, num);}private void m1(Long id, Integer num) {System.out.println("==============>StockServiceImplMANDATORY的m1()执行了");try {// 减库存StockDO dbStock = stockMapper.selectById(id);StockDO updateStock = new StockDO();BeanUtils.copyProperties(dbStock, updateStock);updateStock.setNum(dbStock.getNum() - num);stockMapper.updateById(updateStock);// 增加积分IntegralDO updateIntegral = new IntegralDO();updateIntegral.setPreIntegral(0);updateIntegral.setCurrentIntegral(1000);updateIntegral.setUserId(1L);integralServiceImplMANDATORY.addIntegral(updateIntegral);int i = 10 / 0;} catch (Exception e) {throw new RuntimeException(e);}}}

1.2、IntegralServiceImplMANDATORY 

/*** @Author : 一叶浮萍归大海* @Date: 2023/10/30 15:43* @Description: 演示NESTED的传播行为*      外部不存在事务:*      外部存在事务:*/
@Service(value = "integralServiceImplMANDATORY")
public class IntegralServiceImplMANDATORY extends ServiceImpl<IntegralMapper, IntegralDO> implements IntegralService {@Resourceprivate IntegralMapper integralMapper;@Transactional(propagation = Propagation.MANDATORY,rollbackFor = Exception.class)@Overridepublic void addIntegral(IntegralDO updateIntegral) {m1(updateIntegral);}private void m1(IntegralDO updateIntegral) {try {System.out.println("==============>IntegralServiceImplMANDATORY的m1()执行了");integralMapper.insert(updateIntegral);int i = 10 / 0;} catch (Exception e) {throw new RuntimeException(e);}}}

相关文章:

系列四十五、Spring的事务传播行为案例演示(五)#MANDATORY

一、演示Spring的传播行为&#xff08;MANDATORY&#xff09; 1.1、StockServiceImplMANDATORY /*** Author : 一叶浮萍归大海* Date: 2023/10/30 15:43* Description: 演示MANDAORY的传播行为* 外部不存在事务&#xff1a;抛出异常 No existing transaction found for…...

idea插件(二)-- String Manipulation(字符串处理工具)

目录 1. 安装 String Manipulation 2. 默认快捷键 3. 操作说明 3.1 变量名的形式处理 3.2 文本形式的转化...

HQChart实战教程67-worker批量计算股票指标

HQChart实战教程67-worker批量计算股票指标 什么是Worker批量指标计算示例地址步骤1. 创建一个后台工作线程类2. 发送指标计算任务3. 接收计算结果数据对接 完整源码demo_workerthread_sina.htmlhqchart_worker_sina.js HQChart插件源码地址 什么是Worker Worker 接口是 Web W…...

博客系统自动化测试项目实践

文章目录 一.测试需求分析1.功能分析2.非功能分析 二.制定测试方案&#xff08;计划 策略&#xff09;三.编写测试用例四.执行自动化测试用例五.编写测试报告六.项目总结 一.测试需求分析 1.功能分析 通过功能测试需求分析 2.非功能分析 非功能分析主要从:界面,性能,安全性,…...

软考高级之系统架构师系列之操作系统基础

概念 接口 操作系统为用户提供两类接口&#xff1a;操作一级的接口和程序控制一级的接口。操作一级的接口包括操作控制命令、菜单命令等&#xff1b;程序控制一级的接口包括系统调用。 UMA和NUMA UMA&#xff0c;统一内存访问&#xff0c;Uniform Memory Access&#xff0c…...

制作一个可以arm架构下运行的docker镜像(for Python)

看完本篇文章&#xff0c;你将得到一个可以arm架构下运行的python 基础镜像。 题外话 这里直接说docker镜像有点儿草率&#xff0c;因为目前很多容器都是Podman了。 podman的介绍 arm和aarch傻傻分不清楚 现在这两个是一样的意思了。 arm64和aarch64之间的区别 开始制作镜…...

Goland连接服务器/虚拟机远程编译开发

创建SSH连接 SSH用于与远程服务器建立连接 Settings -> Tools -> SSH Configurations 添加新的ssh连接&#xff0c;Host为ip地址&#xff0c;Username为用户名&#xff0c;认证方式这里选择密码验证 全部填完后可以点击Test Connection测试连接是否成功 创建Deployment…...

大数据Doris(十四):Doris表中的数据基本概念

文章目录 Doris表中的数据基本概念 一、​​​​​​​Row & Column...

【Linux】Linux环境配置以及部署项目后端

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Linux的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Linux环境配置 1.JDK ①上传安装包到…...

RabbitMQ消费者的可靠性

目录 一、消费者确认 二、失败重试机制 2.1、失败处理策略 三、业务幂等性 3.1、唯一消息ID 3.2、业务判断 3.3、兜底方案 一、消费者确认 RabbitMQ提供了消费者确认机制&#xff08;Consumer Acknowledgement&#xff09;。即&#xff1a;当消费者处理消息结束后&#x…...

云计算助力史上首届“云上亚运”圆满成功!

201金&#xff0c;魔幻的BGM&#xff0c;以及崛起的中国科技&#xff0c;让杭州亚运会成功出圈。 很多网友表示太震撼了&#xff01;开幕式很漂亮&#xff0c;杭州为了奥运造新城真豪横&#xff0c;看完一整个文化自信住&#xff01; 赛场内外除了无数个令人感动的瞬间&#…...

博彦科技:以金融为起点,凭借创新技术平台真打实干

【科技明说 &#xff5c; 重磅专题】 成立于1995年的博彦科技&#xff0c;已有28年左右的发展历程。 我没有想到&#xff0c;博彦科技也对AIGC领域情有独钟。博彦科技自研的数字人产品SaaS平台&#xff0c;可以接入包括百度文心一言、阿里通义千问等AI大模型产品。可见&#…...

NLP实践——中文指代消解方案

NLP实践——中文指代消解方案 1. 参考项目2. 数据2.1 生成conll格式2.2 生成jsonline格式 3. 训练3.1 实例化模型3.2 读取数据3.3 评估方法3.4 训练方法 4. 推理5. 总结 1. 参考项目 关于指代消解任务&#xff0c;有很多开源的项目和工具可以借鉴&#xff0c;比如spacy的基础模…...

【Redis】认识Redis-特点特性应用场景对比MySQL重要文件及作用

文章目录 认识redisredis的主要特点redis的特性&#xff08;优点&#xff09;redis是单线程模型&#xff0c;为什么效率这么高&#xff0c;访问速度这么快redis应用场景redis不可以做什么MySQL和Redis对比启动RedisRedis客户端Redis重要文件及作用 认识redis redis里面相关的小…...

goland setup go env

go env -w设置的变量&#xff0c;在goland中不生效&#xff0c;需要额外配置。 点击goland->preference&#xff0c;在go module里&#xff0c;设置go环境变量即可。...

如何打造一支敏捷测试团队

文章目录 摘要01 从测试角度理解敏捷理念什么是敏捷&#xff1f;测试人员应该怎样理解敏捷理念&#xff1f;敏捷宣言对于测试活动的启发与思考总结如下。敏捷原则12条敏捷实践框架为什么要做敏捷 02 什么是敏捷测试03 敏捷测试为什么会失败04 诊断脑暴会的成果示例敏捷测试原则…...

STM32F40EZT6 PWM可控制电压原理

PWM可控制电压原理 主要通过PWM 输入模式根据控制单位时间内输出的平均电压&#xff0c;以调节电压大小。而PWM输出模式通过调节占空比&#xff0c;控制平均电压大小&#xff1b; 设置TIM为PWM输出模式 第一步&#xff1a;时钟使能&#xff1a; GPIO&#xff0c;TIM; 第二步&a…...

信号灯集,消息队列

信号灯集 1、概念 信号灯(semaphore)&#xff0c;也叫信号量。它是不同进程间或一个给定进程内部不同线程间同步的机制&#xff1b;System V的信号灯是一个或者多个信号灯的一个集合。其中的每一个都是单独的计数信号灯。而Posix信号灯指的是单个计数信号灯。 通过信号灯集实现…...

我在Vscode学OpenCV 初步接触

OpenCV是一个开源的计算机视觉库&#xff0c;可以处理图像和视频数据。它包含了超过2500个优化过的算法&#xff0c;用于对图像和视频进行处理&#xff0c;包括目标识别、面部识别、运动跟踪、立体视觉等。OpenCV支持多种编程语言&#xff0c;包括C、Python、Java等&#xff0c…...

[threejs]让导入的gltf模型显示边框

边框1效果图如下&#xff1a; 代码如下&#xff1a; const gltfLoader1 new GLTFLoader();gltfLoader1.load( "/assets/box/1/scene.gltf" ,function(gltf){let model gltf.scene;model.scale.set(3,3,3)// scene1.add(model);// renderer1.render(scene1, camera…...

Shell应用手册(一) 5 .终端连接与环境配置(SSH连接、命令行提示符含义)

对于后端开发者、运维工程师而言&#xff0c;终端是日常工作中最常用的工具之一。无论是远程管理服务器&#xff0c;还是本地调试程序&#xff0c;终端连接的稳定性、环境配置的合理性&#xff0c;直接影响工作效率。而SSH连接作为远程终端访问的核心方式&#xff0c;命令行提示…...

2026中国大模型市场火爆!阿里字节抢人才,年薪百万Offer等你来!

最新数据显示&#xff0c;2024年中国大模型市场规模已达294.16亿元&#xff0c;其中多模态大模型贡献156.3亿元&#xff0c;数字人、游戏等场景应用增长迅猛&#xff1b;更有预测指出&#xff0c;2026年这一市场规模将突破700亿元大关。图源自36氪研究院 市场竞争梯队也逐渐清晰…...

CSS如何利用Less快速生成颜色渐变背景_使用混合函数生成多样渐变

用带参数的.gradient-bg()混合函数&#xff0c;支持start-color、end-color、direction及透明度微调&#xff0c;避免硬编码&#xff1b;多色用.gradient-bg-stops()&#xff1b;注意转义方向值、变量定义顺序、CSS变量分层及Safari渲染兼容性。Less混合函数怎么写才能生成可复…...

轻型民用无人机安全操控指南:法规解读与实践应用

1. 轻型民用无人机法规基础解读 第一次接触无人机时&#xff0c;我和很多新手一样兴奋地想要马上起飞&#xff0c;直到在公园被保安拦下才知道需要遵守飞行规则。现在每次看到新手飞友准备"黑飞"&#xff0c;我都会主动提醒他们先了解法规。目前我国对轻型民用无人机…...

CMake实战:如何自动生成带Git分支和编译时间的版本号(附完整代码)

CMake实战&#xff1a;自动化生成含Git分支与编译时间的版本标识系统 在持续集成和敏捷开发成为主流的今天&#xff0c;每次代码提交都可能触发自动化构建流程。作为开发者&#xff0c;你是否遇到过这样的困扰&#xff1a;测试人员报告了一个问题&#xff0c;但无法快速确认他们…...

Java final关键字与抽象类深度解析

二、final关键字各位同学&#xff0c;接下来我们学习一个在面向对象编程中偶尔会用到的一个关键字叫final&#xff0c;也是为后面学习抽象类和接口做准备的。2.1 final修饰符的特点(面试题)我们先来认识一下final的特点&#xff0c;final关键字是最终的意思&#xff0c;可以修饰…...

实时行情系统设计:从协议选择到高可用架构,再到数据源选型蘸

一、核心问题及解决方案&#xff08;按踩坑频率排序&#xff09; 问题 1&#xff1a;误删他人持有锁——最基础也最易犯的漏洞 成因&#xff1a;释放锁时未做身份校验&#xff0c;直接执行 DEL 命令删除键。典型场景&#xff1a;服务 A 持有锁后&#xff0c;业务逻辑耗时超过锁…...

紧急预警:Mojo v1.1.3+ 版本Python插件存在ABI不兼容漏洞!立即执行这3条命令规避崩溃风险

第一章&#xff1a;紧急预警&#xff1a;Mojo v1.1.3 版本Python插件存在ABI不兼容漏洞&#xff01;立即执行这3条命令规避崩溃风险近期安全审计发现&#xff0c;Mojo 编译器 v1.1.3 及后续版本&#xff08;含 v1.1.4、v1.1.5&#xff09;中内置的 Python 插件&#xff08;mojo…...

从‘Hello World’到跨平台项目:手把手教你用CMake+Clang/LLVM配置现代C++开发环境

从‘Hello World’到跨平台项目&#xff1a;手把手教你用CMakeClang/LLVM配置现代C开发环境 在C开发领域&#xff0c;构建系统的选择和配置往往决定了项目的可维护性和跨平台能力。传统上&#xff0c;开发者可能依赖单一编译器或IDE内置工具链&#xff0c;但随着项目复杂度提升…...

双非逆袭!25年兰大计算机专硕上岸率超84%,我的跨考保姆级攻略(含806专业课避坑指南)

双非逆袭&#xff01;25年兰大计算机专硕上岸率超84%&#xff0c;我的跨考保姆级攻略&#xff08;含806专业课避坑指南&#xff09; 作为一名本科双非院校的跨考生&#xff0c;我在2025年成功上岸兰州大学计算机专硕。这一年&#xff0c;兰大计算机专硕的一志愿上岸率高达84.1%…...