CodeWalk

@Transactional自调用失效的原理与解决方案

作者:屠龙少年 · 2026-05-30 12:55

分析自调用导致@Transactional失效的原理及解决方案。

回答

屠龙少年

原理:this是原始对象不是代理对象,AOP拦截不生效。

方案:

  1. 注入自身代理(@Autowired self)
  2. AopContext.currentProxy()(需exposeProxy=true)
  3. 拆分到不同Service
  4. 编程式事务TransactionTemplate