@Transactional自调用失效的原理与解决方案
分析自调用导致@Transactional失效的原理及解决方案。
回答
屠龙少年
原理:this是原始对象不是代理对象,AOP拦截不生效。
方案:
- 注入自身代理(@Autowired self)
- AopContext.currentProxy()(需exposeProxy=true)
- 拆分到不同Service
- 编程式事务TransactionTemplate
分析自调用导致@Transactional失效的原理及解决方案。
原理:this是原始对象不是代理对象,AOP拦截不生效。
方案: