系列四十五、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的传播行为(MANDATORY) 1.1、StockServiceImplMANDATORY /*** Author : 一叶浮萍归大海* Date: 2023/10/30 15:43* Description: 演示MANDAORY的传播行为* 外部不存在事务:抛出异常 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.非功能分析 二.制定测试方案(计划 策略)三.编写测试用例四.执行自动化测试用例五.编写测试报告六.项目总结 一.测试需求分析 1.功能分析 通过功能测试需求分析 2.非功能分析 非功能分析主要从:界面,性能,安全性,…...

软考高级之系统架构师系列之操作系统基础
概念 接口 操作系统为用户提供两类接口:操作一级的接口和程序控制一级的接口。操作一级的接口包括操作控制命令、菜单命令等;程序控制一级的接口包括系统调用。 UMA和NUMA UMA,统一内存访问,Uniform Memory Access,…...

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

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

大数据Doris(十四):Doris表中的数据基本概念
文章目录 Doris表中的数据基本概念 一、Row & Column...

【Linux】Linux环境配置以及部署项目后端
🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Linux的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Linux环境配置 1.JDK ①上传安装包到…...

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

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

博彦科技:以金融为起点,凭借创新技术平台真打实干
【科技明说 | 重磅专题】 成立于1995年的博彦科技,已有28年左右的发展历程。 我没有想到,博彦科技也对AIGC领域情有独钟。博彦科技自研的数字人产品SaaS平台,可以接入包括百度文心一言、阿里通义千问等AI大模型产品。可见&#…...

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

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

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

如何打造一支敏捷测试团队
文章目录 摘要01 从测试角度理解敏捷理念什么是敏捷?测试人员应该怎样理解敏捷理念?敏捷宣言对于测试活动的启发与思考总结如下。敏捷原则12条敏捷实践框架为什么要做敏捷 02 什么是敏捷测试03 敏捷测试为什么会失败04 诊断脑暴会的成果示例敏捷测试原则…...
STM32F40EZT6 PWM可控制电压原理
PWM可控制电压原理 主要通过PWM 输入模式根据控制单位时间内输出的平均电压,以调节电压大小。而PWM输出模式通过调节占空比,控制平均电压大小; 设置TIM为PWM输出模式 第一步:时钟使能: GPIO,TIM; 第二步&a…...

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

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

[threejs]让导入的gltf模型显示边框
边框1效果图如下: 代码如下: 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…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...