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

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控制语句&#xff1a;语法格式&#xff1a; age 20 if age > 18:print("我不是小孩子") elif age < 18:print("你永远都是小孩子") else:print("你永远都是小孩子") 2、while循环语句&#xff1a;语法格式&#xff1a; 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&#xff0c;复制内容到 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组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之DataPanel组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、DataPanel组件 数据面板组件&#xff0c;用于将多个数据占比情况使用占比图进…...

qt5-入门

参考&#xff1a; qt学习指南 Qt5和Qt6的区别-CSDN博客 Qt 学习之路_w3cschool Qt教程&#xff0c;Qt5编程入门教程&#xff08;非常详细&#xff09; 本地环境&#xff1a; win10专业版&#xff0c;64位 技术选择 Qt5力推QML界面编程。QML类似HTML&#xff0c;可以借助CSS进…...

【重磅发布】已开放!模型师入驻、转格式再升级、3D展示框架全新玩法…

1月23日&#xff0c;老子云正式发布全新版本。此次新版本包含多板块功能上线和升级&#xff0c;为用户带来了含模型师入驻、三维格式在线转换升级、模型免费增值权益开放、全新3D展示框架等一系列精彩内容&#xff01; 1月23日&#xff0c;老子云正式发布全新版本。此次新版本…...

Qt 基础之QDataTime

Qt 基础之QDataTime 引言一、获取(设定)日期和时间二、时间戳三、时间计算 (重载运算符) 引言 QDataTime是Qt框架中用于处理日期和时间的类。它提供了操作和格式化日期、时间和日期时间组合的功能。QDataTime可以用于存储和检索日期和时间、比较日期和时间、对日期和时间执行算…...

美国将限制中国,使用Azure、AWS等云,训练AI大模型

1月29日&#xff0c;美国商务部在Federal Register&#xff08;联邦公报&#xff09;正式公布了&#xff0c;《采取额外措施应对与重大恶意网络行为相关的国家紧急状态》提案。 该提案明确要求美国IaaS&#xff08;云服务&#xff09;厂商在提供云服务时&#xff0c;要验证外国…...

智能指针|巨巨巨详细

智能指针 shared_ptrshared_ptr的基本用法使用shared_ptr要注意的问题 unique_ptr独占的智能指针weak_ptr弱引用的智能指针weak_ptr的基本用法weak_ptr返回this指针weak_ptr解决循环引用问题 weak_ptr使用注意事项 智能指针 C程序设计中使用堆内存是非常频繁的操作&#xff0…...

硬件知识(2) 手机的传感器-sensor

#灵感# 看看小米在干啥 手机型号&#xff1a;Redmi Note 13 Pro&#xff0c;解读一下它宣传的手机卖点。 目录 宣传1&#xff1a;1/1.4" 大底&#xff0c;f/1.65 大光圈&#xff0c; 宣传2&#xff1a;支持 2 亿像素超清直出&#xff0c;分辨率高达 16320 x 12240 宣…...

【实战指南】Windows10链路聚合配置:从LBFO报错到NetSwitchTeam的完美切换

1. 为什么需要链路聚合&#xff1f;从原理到应用场景 当你用笔记本连着WiFi下载大文件时&#xff0c;突然需要视频会议&#xff0c;是不是常遇到网络卡顿&#xff1f;这就是单网口的瓶颈。链路聚合&#xff08;Link Aggregation&#xff09;就像把多条车道合并成高速公路&#…...

基于STM32单片机指纹考勤系统签到打卡设计

一、系统介绍 本文介绍了一种基于 STM32 单片机的指纹开锁签到考勤系统。该系统以 STM32F103C8T6 单片机核心板为控制中枢&#xff0c;整合了多个关键模块。用户可根据实际需求选择 2.4 寸或 1.44 寸的 TFT 彩屏&#xff0c;用于清晰地显示系统状态及操作提示信息。可选的无线蓝…...

1990-2025年企业基金退出事件数据

数据介绍 企业投资机构通过公开招募&#xff0c;并购&#xff0c;同行转售等退出方式转让基金份额、底层项目股权、IPO、回购、清算等方式&#xff0c;从所投基金或项目中收回资金、实现收益或止损离场的完整交易与流程。 数据整理1990至2025年企业基金退出事件数据&#xff…...

UniApp扫码插件选型指南:从MLKit极速识别到ZXing经典方案的实战解析

1. UniApp扫码插件选型核心考量因素 当你需要在UniApp项目中集成扫码功能时&#xff0c;面对市面上五花八门的插件往往会陷入选择困难。作为经历过多个商业项目的老手&#xff0c;我建议从以下几个维度进行考量&#xff1a; 识别速度是最直观的体验指标。实测数据显示&#xff…...

Claude Code交互日志分析:用BERT分割理解AI编程助手的对话逻辑

Claude Code交互日志分析&#xff1a;用BERT分割理解AI编程助手的对话逻辑 你有没有想过&#xff0c;当你向Claude Code这样的AI编程助手提问时&#xff0c;它到底是怎么理解你那一长串话的&#xff1f;比如&#xff0c;你可能会一口气问&#xff1a;“帮我写个Python函数来读…...

万象熔炉 | Anything XL详细步骤:错误提示‘low VRAM’的5种应对策略

万象熔炉 | Anything XL详细步骤&#xff1a;错误提示‘low VRAM’的5种应对策略 1. 工具简介与显存挑战 万象熔炉 | Anything XL是一款基于Stable Diffusion XL Pipeline开发的本地图像生成工具&#xff0c;它最大的特点是支持直接加载safetensors单文件权重&#xff0c;无需…...

2026.4.3要闻

百度首页 哈哈哈分享万岁 最大、首艘!中国“超级装备”密集上新 正观新闻 2026-04-03 07:52正观新闻官方账号 关注 近日,国内高端装备制造领域迎来密集突破,多款具有里程碑意义的新产品相继首发、试航或“上岸”。一系列“超级装备”的亮相,彰显了我国自主研发与制造…...

OFA-VE系统在网络安全领域的视觉分析应用

OFA-VE系统在网络安全领域的视觉分析应用 1. 引言 网络安全监控正面临前所未有的挑战。随着网络攻击手段的日益复杂和隐蔽&#xff0c;传统的基于规则和签名的检测方法已经难以应对新型威胁。每天都有海量的图像和文本数据在网络中流动&#xff0c;其中可能隐藏着恶意内容、虚…...

PX4固件版本不对,Offboard模式失灵?手把手教你给Pixhawk 4刷回旧版固件(附v1.11.0固件下载)

PX4固件版本不匹配导致Offboard模式失效&#xff1f;Pixhawk 4降级刷机全指南 最近在调试无人机Offboard模式时&#xff0c;不少开发者反馈最新版PX4固件出现兼容性问题——明明MAVLink指令发送正常&#xff0c;飞控却拒绝进入Offboard模式。这种"沉默式失效"往往让…...

图文对话AI快速部署:Qwen3-VL-WEBUI Docker实战教程

图文对话AI快速部署&#xff1a;Qwen3-VL-WEBUI Docker实战教程 1. 认识Qwen3-VL-WEBUI 1.1 什么是Qwen3-VL-WEBUI&#xff1f; Qwen3-VL-WEBUI是一个基于Docker的图文对话AI解决方案&#xff0c;它将强大的Qwen3-VL视觉语言模型封装成易于使用的网页界面。通过这个工具&…...