上一题下一题

同类方法内部调用为什么可能导致 Spring 声明式事务失效

进阶版
来源:alibaba初级工程师Spring声明式事务失效事务回滚边界AOP代理与Bean生命周期Spring事务传播行为
草稿该题目为草稿状态,前台公开题库中不可见。
答案解析

Spring 声明式事务是基于 AOP 代理实现的,同一个类内部方法互相调用时,事务可能失效,核心原因是: 调用没有经过 Spring 生成的代理对象,而是通过 this 直接调用了目标对象的方法 。

举个例子:

如果外部调用的是:

这里的 orderService 通常是 Spring 代理对象,请求会先经过代理对象,代理对象会开启事务、执行目标方法、提交或回滚事务。

但如果调用的是:

然后在 createOrder() 内部调用 `sa

登录后查看完整内容