同类内部方法调用导致事务注解失效,怎么绕开

事务靠代理生效,同类内部直接 this 调用会绕过注解。

把带注解的方法挪到另一个类,通过注入的实例调用即可生效。

也可以注入自身代理对象,再调用它的方法。

失效还可能是方法非 public,或异常被自己 catch 吞掉了。

// 方案一:拆到另一个 Bean,跨类调用才走代理
//   service.inner();  -> this.inner(); 不生效
// 方案二:注入自身代理
@Autowired private OrderService self;
// 或取 AopContext.currentProxy()
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容