同类方法内部调用为什么可能导致 Spring 声明式事务失效
进阶版来源:alibaba初级工程师Spring声明式事务失效事务回滚边界AOP代理与Bean生命周期Spring事务传播行为
草稿
答案解析
Spring 声明式事务是基于 AOP 代理实现的,同一个类内部方法互相调用时,事务可能失效,核心原因是: 调用没有经过 Spring 生成的代理对象,而是通过 this 直接调用了目标对象的方法 。
举个例子:
如果外部调用的是:
这里的 orderService 通常是 Spring 代理对象,请求会先经过代理对象,代理对象会开启事务、执行目标方法、提交或回滚事务。
但如果调用的是:
然后在 createOrder() 内部调用 `sa
登录后查看完整内容
