SpringBoot自定义全局事务
1.说明
关于@EnableTransactionManagement注解,可加可不加,加注解保证规范性。
2.核心代码
/**
* @author: wangning
* @date: 2024/1/23 16:19
*/
@Aspect
@Configuration
@ConditionalOnClass({TransactionManager.class, TransactionFactory.class})
public class TransactionAdviceConfig {private static final String AOP_POINTCUT_EXPRESSION = "execution(* com.wang..*.service.*.*(..))";// 事务管理@Lazyprivate TransactionManager transactionManager;public TransactionAdviceConfig() {}@Beanpublic TransactionInterceptor txAdvice() {// 设置第一个事务管理模式用于增删改RuleBasedTransactionAttribute txAttrRequired = new RuleBasedTransactionAttribute();// 设置事务的传播行为(当前存在事务则加入其中,不存在则修改)txAttrRequired.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);// 指定事务回滚异常级别,设置为Exception级别txAttrRequired.setRollbackRules(Collections.singletonList(new RollbackRuleAttribute(Exception.class)));// 设置第二个事务管理模式用于查RuleBasedTransactionAttribute txAttrRequiredReadonly = new RuleBasedTransactionAttribute();// 设置事务的传播行为txAttrRequiredReadonly.setPropagationBehavior(0);// 没有设置事务的隔离级别,默认为数据库的隔离级别// 设置事务是否为“只读”(非必须,只是声明该事务中不会进行修改数据库的操作,可减轻由事务机制造成的数据库,属压力于性能优化推荐配置)txAttrRequiredReadonly.setReadOnly(true);// 事务管理规则,承载需要事务管理的方法名,以及事务传播行为和隔离级别NameMatchTransactionAttributeSource source = new NameMatchTransactionAttributeSource();source.addTransactionalMethod("insert*", txAttrRequired);source.addTransactionalMethod("save*", txAttrRequired);source.addTransactionalMethod("add*", txAttrRequired);source.addTransactionalMethod("create*", txAttrRequired);source.addTransactionalMethod("delete*", txAttrRequired);source.addTransactionalMethod("remove*", txAttrRequired);source.addTransactionalMethod("update*", txAttrRequired);source.addTransactionalMethod("modify*", txAttrRequired);source.addTransactionalMethod("exec*", txAttrRequired);source.addTransactionalMethod("set*", txAttrRequired);source.addTransactionalMethod("reset*", txAttrRequired);source.addTransactionalMethod("batch*", txAttrRequired);source.addTransactionalMethod("lock*", txAttrRequired);source.addTransactionalMethod("register*", txAttrRequired);source.addTransactionalMethod("*", txAttrRequiredReadonly);return new TransactionInterceptor(this.transactionManager, source);}@Beanpublic Advisor txAdviceAdvisor() {AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();pointcut.setExpression("execution(* com.wang..*.service.*.*(..))");return new DefaultPointcutAdvisor(pointcut, this.txAdvice());}
}
因为使用了@Aspect注解,所以这里为自动注入容器。如果有方法不想使用事务也很见到,方法或类上加上@Transactional(propagation = Propagation.NOT_SUPPORTED)
相关文章:
SpringBoot自定义全局事务
1.说明 关于EnableTransactionManagement注解,可加可不加,加注解保证规范性。 2.核心代码 /** * author: wangning * date: 2024/1/23 16:19 */ Aspect Configuration ConditionalOnClass({TransactionManager.class, TransactionFactory.class}) pub…...
【FINEBI】finebi中常用图表类型及其适用场景
柱状图(Bar Chart): 比较不同类别或组之间的数量差异:柱状图可以用于比较不同产品、地区、时间段等的销售额、市场份额等。 显示不同时间段的数据变化:通过绘制柱状图,可以观察到销售额、网站流量等随时间…...
Kaggle竞赛系列_SpaceshipTitanic金牌方案分析_数据分析
文章目录 【文章系列】【前言】【比赛简介】【正文】(一)数据获取(二)数据分析1. 缺失值2. 重复值3. 属性类型分析4. 类别分析5. 分析目标数值占比 (三)属性分析1. 对年龄Age分析(1)…...
Tortoise-tts Better speech synthesis through scaling——TTS论文阅读
笔记地址:https://flowus.cn/share/a79f6286-b48f-42be-8425-2b5d0880c648 【FlowUs 息流】tortoise 论文地址: Better speech synthesis through scaling Abstract: 自回归变换器和DDPM:自回归变换器(autoregressive transfo…...
单元测试工具JEST入门——纯函数的测试
单元测试工具JEST入门——纯函数的测试 什么是测试❓🙉 我只是开发而已?常见单元测试工具 🔧jest的使用👀 首先你得知道一个简单的例子🌰😨 Oops!出现了一些问题👏 高效的持续监听&a…...
Elasticsearch Windows版安装配置
Elasticsearch简介 Elasticsearch是一个开源的搜索文献的引擎,大概含义就是你通过Rest请求告诉它关键字,他给你返回对应的内容,就这么简单。 Elasticsearch封装了Lucene,Lucene是apache软件基金会一个开放源代码的全文检索引擎工…...
安装 vant-ui 实现底部导航栏 Tabbar
本例子使用vue3 介绍 vant-ui 地址:介绍 - Vant 4 (vant-ui.github.io) Vant 是一个轻量、可定制的移动端组件库 安装 通过 npm 安装: # Vue 3 项目,安装最新版 Vant npm i vant # Vue 2 项目,安装 Vant 2 npm i vantlatest-v…...
GitHub国内打不开(解决办法有效)
最近国内访问github.com经常打不开,无法访问。 github网站打不开的解决方法 1.打开网站http://tool.chinaz.com/dns/ ,在A类型的查询中输入 github.com,找出最快的IP地址。 2.修改hosts文件。 在hosts文件中添加: # localhost n…...
Unity之第一人称角色控制
目录 第一人称角色控制 😴1、准备工作 📺2、鼠标控制摄像机视角 🎮3、角色控制 😃4.杂谈 第一人称角色控制 专栏Unity之动画和角色控制-CSDN博客的这一篇也有讲到角色控制器,是第三人称视角的,以小编…...
23种设计模式-结构型模式
1.代理模式 在软件开发中,由于一些原因,客户端不想或不能直接访问一个对象,此时可以通过一个称为"代理"的第三者来实现间接访问.该方案对应的设计模式被称为代理模式. 代理模式(Proxy Design Pattern ) 原始定义是:让你能够提供对象的替代品或其占位符。…...
python -- 流程控制
1、if控制语句:语法格式: age 20 if age > 18:print("我不是小孩子") elif age < 18:print("你永远都是小孩子") else:print("你永远都是小孩子") 2、while循环语句:语法格式: age1 30 …...
Centos 7.9 在线安装 VirtualBox 7.0
1 访问 Linux_Downloads – Oracle VM VirtualBox 2 点击 the Oracle Linux repo file 复制 内容到 /etc/yum.repos.d/. 3 在 /etc/yum.repos.d/ 目录下新建 virtualbox.repo,复制内容到 virtualbox.repo 并 :wq 保存。 [rootlocalhost centos]# cd /etc/yum.rep…...
mysql之基本查询
基本查询 一、SELECT 查询语句 一、SELECT 查询语句 查询所有列 1 SELECT *FORM emp;查询指定字段 SELECT empno,ename,job FROM emp;给字段取别名 SELECT empno 员工编号 FROM emp; SELECT empno 员工编号,ename 姓名,job 岗位 FROM emp; SELECT empno AS 员工编号,ename …...
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之DataPanel组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之DataPanel组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、DataPanel组件 数据面板组件,用于将多个数据占比情况使用占比图进…...
qt5-入门
参考: qt学习指南 Qt5和Qt6的区别-CSDN博客 Qt 学习之路_w3cschool Qt教程,Qt5编程入门教程(非常详细) 本地环境: win10专业版,64位 技术选择 Qt5力推QML界面编程。QML类似HTML,可以借助CSS进…...
【重磅发布】已开放!模型师入驻、转格式再升级、3D展示框架全新玩法…
1月23日,老子云正式发布全新版本。此次新版本包含多板块功能上线和升级,为用户带来了含模型师入驻、三维格式在线转换升级、模型免费增值权益开放、全新3D展示框架等一系列精彩内容! 1月23日,老子云正式发布全新版本。此次新版本…...
Qt 基础之QDataTime
Qt 基础之QDataTime 引言一、获取(设定)日期和时间二、时间戳三、时间计算 (重载运算符) 引言 QDataTime是Qt框架中用于处理日期和时间的类。它提供了操作和格式化日期、时间和日期时间组合的功能。QDataTime可以用于存储和检索日期和时间、比较日期和时间、对日期和时间执行算…...
美国将限制中国,使用Azure、AWS等云,训练AI大模型
1月29日,美国商务部在Federal Register(联邦公报)正式公布了,《采取额外措施应对与重大恶意网络行为相关的国家紧急状态》提案。 该提案明确要求美国IaaS(云服务)厂商在提供云服务时,要验证外国…...
智能指针|巨巨巨详细
智能指针 shared_ptrshared_ptr的基本用法使用shared_ptr要注意的问题 unique_ptr独占的智能指针weak_ptr弱引用的智能指针weak_ptr的基本用法weak_ptr返回this指针weak_ptr解决循环引用问题 weak_ptr使用注意事项 智能指针 C程序设计中使用堆内存是非常频繁的操作࿰…...
硬件知识(2) 手机的传感器-sensor
#灵感# 看看小米在干啥 手机型号:Redmi Note 13 Pro,解读一下它宣传的手机卖点。 目录 宣传1:1/1.4" 大底,f/1.65 大光圈, 宣传2:支持 2 亿像素超清直出,分辨率高达 16320 x 12240 宣…...
如何用嘎嘎降AI处理金融学论文:金融学毕业论文降AI4.8元完整操作教程
如何用嘎嘎降AI处理金融学论文:金融学毕业论文降AI4.8元完整操作教程 第一次用降AI工具有很多不确定——传什么格式、选哪个模式、怎么验收。 这篇教程把金融学论文降AI教程的常见问题都覆盖了,主要基于嘎嘎降AI(www.aigcleaner.com&#x…...
Avidemux视频编辑工具终极指南:5个简单步骤快速上手专业剪辑
Avidemux视频编辑工具终极指南:5个简单步骤快速上手专业剪辑 【免费下载链接】avidemux2 Avidemux2, simple video editor 项目地址: https://gitcode.com/gh_mirrors/avi/avidemux2 你是否曾经因为复杂的视频编辑软件而头疼?想要一个免费、开源且…...
GetStoreApp核心功能解析:离线部署Microsoft Store应用的5大优势
GetStoreApp核心功能解析:离线部署Microsoft Store应用的5大优势 【免费下载链接】GetStoreApp 离线下载 Microsoft Store 商店应用 项目地址: https://gitcode.com/gh_mirrors/ge/GetStoreApp GetStoreApp是一款专为Windows用户设计的离线下载工具ÿ…...
PyAutoGUI图像识别踩坑实录:如何让游戏自动化脚本更稳定?(附避坑指南)
PyAutoGUI图像识别稳定性优化实战:从原理到避坑指南游戏自动化脚本开发中,图像识别是最容易翻车的环节。上周我的《原神》自动采集脚本在好友电脑上运行时,连续三次误点了传送锚点而非目标采集物——这让我意识到不同设备环境对locateOnScree…...
告别ENVI/Erdas!用PCI Geomatica处理Pleiades立体像对,手把手教你提取高精度DEM(附数据与避坑指南)
从Pleiades立体像对到高精度DEM:PCI Geomatica全流程实战解析 在遥感数据处理领域,数字高程模型(DEM)的生成一直是核心工作之一。传统主流软件如ENVI和Erdas虽然功能全面,但在处理高分辨率卫星立体像对时,特…...
多臂老虎机算法:实现模型部署的自动化与自适应决策
1. 项目概述与核心痛点在机器学习项目的全生命周期里,模型部署上线从来都不是终点,而恰恰是真正挑战的开始。相信很多一线的算法工程师和MLOps工程师都经历过这样的场景:你耗费数周心血,在离线验证集上刷出了历史新高的AUC&#x…...
美国AI监管令紧急叫停:安全与速度的终极博弈与全球AI治理新格局
一、事件核心:临门一脚的惊天逆转 2026年5月21日,美国华盛顿时间下午2点,原本应该是白宫椭圆形办公室一场万众瞩目的签字仪式。特朗普总统计划签署一项酝酿数月的AI安全行政令,该令要求OpenAI、Anthropic、谷歌等头部AI企业在发布…...
3分钟从视频中提取PPT:告别手动截图的全自动方案
3分钟从视频中提取PPT:告别手动截图的全自动方案 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 你是否曾为从会议录像、在线课程或培训视频中提取PPT页面而烦恼…...
保姆级教程:手把手教你用插桩法逆向分析小红书X-S加密(附完整JSVMP日志)
JSVMP逆向工程实战:从加密定位到算法还原的全流程解析 逆向工程的世界里,JSVMP(JavaScript Virtual Machine Protection)一直是让许多开发者望而生畏的存在。这种前端代码虚拟化保护技术通过将JavaScript源代码编译为自定义字节码…...
openpilot终极指南:如何为你的爱车快速添加自动驾驶辅助功能
openpilot终极指南:如何为你的爱车快速添加自动驾驶辅助功能 【免费下载链接】openpilot openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars. 项目地址: https://gitcode.com/GitHub_T…...
