事务靠代理生效,同类内部直接 this 调用会绕过注解。
把带注解的方法挪到另一个类,通过注入的实例调用即可生效。
也可以注入自身代理对象,再调用它的方法。
失效还可能是方法非 public,或异常被自己 catch 吞掉了。
// 方案一:拆到另一个 Bean,跨类调用才走代理
// service.inner(); -> this.inner(); 不生效
// 方案二:注入自身代理
@Autowired private OrderService self;
// 或取 AopContext.currentProxy()
THE END






暂无评论内容