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