news 2026/5/12 5:54:29

@Transcational

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
@Transcational

@Transcational 是 Spring 中声明式事务管理的注解

通俗来讲就是用了 @Transcational 当 sql 语句每条执行后,遇到错误不会回滚,但是用了这个歌注解之后 sql 会回滚

一般用法

@Service public class OrderService { @Autowired private OrderMapper orderMapper; @Autowired private StockMapper stockMapper; @Transactional // 开启事务 public void createOrder(Order order) { // 1. 保存订单 orderMapper.insert(order); // 2. 扣减库存 stockMapper.deduct(order.getProductId(), order.getQuantity()); // 3. 如果这里抛出异常,订单和库存都会回滚 } }

事务传播行为(最常用的配置)

传播级别说明使用场景
REQUIRED默认有事务就用当前的,没有就新建大部分业务方法
REQUIRES_NEW总是新建挂起当前事务,新建一个独立事务日志记录、独立子任务
SUPPORTS有就用,没有就不用不需要事务的方法只读查询
MANDATORY必须有事务强制要求调用方有事务核心业务方法
NOT_SUPPORTED不用事务挂起当前事务非关键操作
NEVER必须没有事务禁止在事务中执行某些特殊操作
NESTED嵌套事务内层事务回滚不影响外层批量处理(部分回滚)
@Transactional // 默认 REQUIRED public void methodA() { // 有事务 methodB(); // 会加入 methodA 的事务 } @Transactional(propagation = Propagation.REQUIRES_NEW) public void methodB() { // 新建独立事务,methodA 的回滚不影响 methodB }

事务隔离级别

隔离级别脏读不可重复读幻读说明
READ_UNCOMMITTED读未提交(最低)
READ_COMMITTED读已提交(Oracle默认)
REPEATABLE_READ可重复读(MySQL默认)
SERIALIZABLE串行化(最高,最慢)
// 默认:RuntimeException 和 Error 触发回滚,Exception(受检异常)不触发 @Transactional public void method() { // SQLException 不会触发回滚 } // 指定回滚的异常类型 @Transactional(rollbackFor = Exception.class) // 所有异常都回滚 public void method() { // SQLException 也会触发回滚 } // 指定不回滚的异常 @Transactional(noRollbackFor = IllegalArgumentException.class) public void method() { // IllegalArgumentException 不会触发回滚 }

常见陷阱

陷阱说明解决方案
同类方法调用无效同一个类中,无事务方法调用事务方法,事务不生效注入自身或把方法分开
private 方法无效@Transactional不能用在 private 方法上使用 public
异常被 catch 了自己 catch 异常后不抛出,事务不回滚重新抛出或手动回滚
数据库引擎不支持MyISAM 引擎不支持事务使用 InnoDB
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 5:54:28

Java高频面试题:Springboot的自动配置原理?

大家好,我是锋哥。今天分享关于【Java高频面试题:Springboot的自动配置原理?】面试题 。希望对大家有帮助;Java高频面试题:Springboot的自动配置原理?Spring Boot 的**自动配置(Auto-Configurat…

作者头像 李华
网站建设 2026/4/9 16:21:59

如何让Windows系统性能提升50%?开源优化工具Win11Debloat全解析

如何让Windows系统性能提升50%?开源优化工具Win11Debloat全解析 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutt…

作者头像 李华
网站建设 2026/4/9 16:21:31

CustomTkinter:如何用Python轻松打造现代化桌面应用界面

CustomTkinter:如何用Python轻松打造现代化桌面应用界面 【免费下载链接】CustomTkinter A modern and customizable python UI-library based on Tkinter 项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinter 厌倦了传统Tkinter老旧的界面风格&…

作者头像 李华
网站建设 2026/4/9 16:21:31

自动化内容审核:OpenClaw+Qwen3-4B-Thinking搭建个人防火墙

自动化内容审核:OpenClawQwen3-4B-Thinking搭建个人防火墙 1. 为什么需要个人内容防火墙 作为一个长期活跃在社交媒体平台的内容创作者,我最近遇到了一个棘手的问题。某天深夜发布的一条科普视频,因为背景音乐中出现了某段敏感旋律&#xf…

作者头像 李华
网站建设 2026/4/9 16:20:27

Cursor Pro完整功能破解限制:终极激活与无限使用深度指南

Cursor Pro完整功能破解限制:终极激活与无限使用深度指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your …

作者头像 李华