Tx:局部事务工具
Tx是对 SpringTransactionTemplate的轻量封装用于执行 JDBC、JPA、MyBatis 等命令式局部事务。源码packageio.github.idoly.utils;importjava.util.function.Consumer;importjava.util.function.Supplier;importorg.springframework.stereotype.Component;importorg.springframework.transaction.PlatformTransactionManager;importorg.springframework.transaction.TransactionStatus;importorg.springframework.transaction.annotation.Propagation;importorg.springframework.transaction.support.DefaultTransactionDefinition;importorg.springframework.transaction.support.TransactionCallback;importorg.springframework.transaction.support.TransactionTemplate;ComponentpublicfinalclassTx{privatefinalPlatformTransactionManagertransactionManager;publicTx(PlatformTransactionManagertransactionManager){this.transactionManagertransactionManager;}publicvoidrun(Runnableaction){run(ignored-action.run());}publicvoidrun(ConsumerTransactionStatusaction){newTransactionTemplate(transactionManager).executeWithoutResult(action);}publicvoidrun(Propagationpropagation,Runnableaction){run(propagation,ignored-action.run());}publicvoidrun(Propagationpropagation,ConsumerTransactionStatusaction){run(definition-definition.setPropagationBehavior(propagation.value()),action);}publicvoidrun(ConsumerDefaultTransactionDefinitioncustomizer,Runnableaction){run(customizer,ignored-action.run());}publicvoidrun(ConsumerDefaultTransactionDefinitioncustomizer,ConsumerTransactionStatusaction){createTemplate(customizer).executeWithoutResult(action);}publicTTcall(SupplierTaction){returncall(ignored-action.get());}publicTTcall(TransactionCallbackTaction){returnnewTransactionTemplate(transactionManager).execute(action);}publicTTcall(Propagationpropagation,SupplierTaction){returncall(propagation,ignored-action.get());}publicTTcall(Propagationpropagation,TransactionCallbackTaction){returncall(definition-definition.setPropagationBehavior(propagation.value()),action);}publicTTcall(ConsumerDefaultTransactionDefinitioncustomizer,SupplierTaction){returncall(customizer,ignored-action.get());}publicTTcall(ConsumerDefaultTransactionDefinitioncustomizer,TransactionCallbackTaction){returncreateTemplate(customizer).execute(action);}privateTransactionTemplatecreateTemplate(ConsumerDefaultTransactionDefinitioncustomizer){TransactionTemplatetemplatenewTransactionTemplate(transactionManager);customizer.accept(template);returntemplate;}}使用无返回值tx.run(()-{accountRepository.debit(sourceId,amount);accountRepository.credit(targetId,amount);});有返回值Ordersavedtx.call(()-orderRepository.save(order));指定传播方式importstaticorg.springframework.transaction.annotation.Propagation.REQUIRES_NEW;tx.run(REQUIRES_NEW,()-auditRepository.save(event));自定义事务Orderfoundtx.call(definition-{definition.setReadOnly(true);definition.setTimeout(5);},()-orderRepository.findById(id).orElseThrow());正常返回但回滚事务booleancreatedtx.call(status-{orderRepository.save(order);if(inventoryRepository.reserve(productId,quantity)0){status.setRollbackOnly();returnfalse;}returntrue;});说明默认传播方式为REQUIRED有事务则加入没有则新建。正常结束时提交抛出RuntimeException或Error时回滚。普通调用使用零参数 Lambda只有主动回滚或检查状态时才接收TransactionStatus。配置回调可设置传播方式、隔离级别、超时、readOnly和事务名称。readOnly是优化提示不是强制写保护。事务不会自动传播到线程池、Async或新线程。R2DBC/Reactor 应使用TransactionalOperator。

相关新闻

真理检验程序、AI半白痴化与文明级操作系统:基于贾子理论(KTS)的全球人工智能范式重构

真理检验程序、AI半白痴化与文明级操作系统:基于贾子理论(KTS)的全球人工智能范式重构

真理检验程序、AI半白痴化与文明级操作系统:基于贾子理论(KTS)的全球人工智能范式重构摘要本文以贾子理论大厦(Kucius Theory System, KTS)为唯一公理基底,系统论证:全球人工智能之所以陷入&quo…

2026/8/23 22:50:19 阅读更多 →
【寻迹校园 HarmonyOS NEXT 实战 29】只允许改期一次、24 小时自动过期:交接安排的防拖延状态机

【寻迹校园 HarmonyOS NEXT 实战 29】只允许改期一次、24 小时自动过期:交接安排的防拖延状态机

【寻迹校园 HarmonyOS NEXT 实战 29】只允许改期一次、24 小时自动过期:交接安排的防拖延状态机这是“寻迹校园 HarmonyOS NEXT 实战”系列第 29 篇。本文结合 HandoffService.reschedule()、shouldExpire()、expiresAt 与本地时间注入测试,说明如何限制…

2026/8/23 22:49:19 阅读更多 →
中科热备:备份一体机吞吐量瓶颈硬核拆解,从500MB/s到20GB/s技术路径

中科热备:备份一体机吞吐量瓶颈硬核拆解,从500MB/s到20GB/s技术路径

中科热备:备份一体机吞吐量瓶颈硬核拆解,从500MB/s到20GB/s技术路径 做灾备运维的兄弟都懂,备份窗口是个要命的东西。生产库白天不能动,晚上备份窗口就6小时,结果备份一体机跑出500MB/s,10TB数据要5.7小时…

2026/8/23 22:49:19 阅读更多 →

最新新闻

Java面试深度解析:ConcurrentHashMap与JMM实战

Java面试深度解析:ConcurrentHashMap与JMM实战

1. 面试场景还原与技术对话解析最近整理了一份真实的Java技术面试录音文字稿,来自某头部互联网公司的中级开发岗位面试。这份材料特别有意思的地方在于,它完整呈现了一个业务能力扎实的面试官如何通过层层追问,揭露出候选人技术深度的真实水平…

2026/8/24 6:35:17 阅读更多 →
技术面试中的Bug调试技巧与实战策略

技术面试中的Bug调试技巧与实战策略

1. 面试中的Bug调试:一场技术与人品的双重考验那天下午三点,我正坐在某大厂会议室里,手指在键盘上敲出最后一个分号。屏幕上的代码突然抛出异常,红色的错误信息在控制台闪烁。对面的面试官嘴角微微上扬:"看来遇到…

2026/8/24 6:35:17 阅读更多 →
大厂Java面试趋势:微服务与AI工程化实战解析

大厂Java面试趋势:微服务与AI工程化实战解析

1. 互联网大厂Java技术栈面试现状剖析最近三年,互联网头部企业的Java技术面试正在经历显著变革。根据我参与的近百场技术面试和内部评审会观察,面试考察重点已从传统的SSM框架八股文转向更复杂的实际场景解决方案。特别是在微服务架构和AI工程化领域&…

2026/8/24 6:35:17 阅读更多 →
virt-manager图形化管理KVM虚拟机:从安装配置到高级运维实战

virt-manager图形化管理KVM虚拟机:从安装配置到高级运维实战

1. 为什么图形化管理工具对虚拟化如此重要? 如果你在服务器上折腾过 KVM,或者在本地电脑上用过 VirtualBox、VMware Workstation,那你肯定对命令行不陌生。无论是用 virsh 命令管理虚拟机生命周期,还是用 qemu-img 创建磁盘镜…

2026/8/24 6:35:17 阅读更多 →
STM32CubeProgrammer与STLINK V2:嵌入式开发高效烧录与调试实战指南

STM32CubeProgrammer与STLINK V2:嵌入式开发高效烧录与调试实战指南

1. 项目概述:为什么STM32CubeProgrammer STLINK V2是嵌入式开发的黄金搭档如果你正在玩STM32,或者正准备踏入这个领域,那么“烧录”这个动作,就是你从代码到硬件世界的第一座桥梁。而这座桥怎么搭才最稳、最快、最省心&#xff1…

2026/8/24 6:35:17 阅读更多 →
AI大模型Agent应用开发实战:从LangChain、RAG到MCP与微调

AI大模型Agent应用开发实战:从LangChain、RAG到MCP与微调

这次我们来看一个面向AI大模型应用开发者的系统性课程资源——“【2027必修AI大模型】Agent应用开发课程100集完整版”。这套课程的核心价值在于,它试图将当前AI应用开发中最核心、最热门的几个技术栈(LangChain、Prompt、RAG、MCP、大模型微调&#xff…

2026/8/24 6:34:16 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →