type
Post
status
Published
date
Oct 15, 2026
slug
JAVA2
summary
tags
技术探索
category
手写
icon
password
spring 中
@Transactional 事务失效主要有以下 6 种常见原因:- 同类方法内部调用:直接通过
this调用事务方法,绕过 Spring AOP 代理,导致事务不生效。
- 异常被捕获:业务代码捕获异常后没有重新抛出,Spring 无法感知异常,事务不会自动回滚。
- 异常类型不匹配:默认只对
RuntimeException和Error回滚,普通受检异常默认不回滚。
- 方法无法被代理:例如
private方法、final方法,或者事务对象没有交给 Spring 管理。
- 事务传播行为配置不当:例如使用
NOT_SUPPORTED,事务会被挂起,目标方法在无事务环境下运行。
- 跨线程调用:Spring 事务上下文默认绑定当前线程,新线程无法自动继承原事务。
一句话总结:事务失效主要从三个方面排查:AOP 代理有没有生效、异常有没有触发回滚、事务上下文有没有正确传播。
分享
