Spring AOP 自调用失效的代理边界:从 JDK 动态代理到 CGLIB 的陷阱
订单服务里内部方法调用导致 @Transactional 不生效,是 Spring AOP 代理边界的典型表现。文章从 JDK 动态代理与 CGLIB 的生成方式讲起,解释 this 与代理对象的区别、事务与缓存切面为何被绕过,并对比自注入、AopContext、拆分 Bean 与 AspectJ 织入的适用条件与代价。
共 2 篇文章
订单服务里内部方法调用导致 @Transactional 不生效,是 Spring AOP 代理边界的典型表现。文章从 JDK 动态代理与 CGLIB 的生成方式讲起,解释 this 与代理对象的区别、事务与缓存切面为何被绕过,并对比自注入、AopContext、拆分 Bean 与 AspectJ 织入的适用条件与代价。
本文围绕订单创建后发送通知与更新统计的场景,解析 Spring 事件发布从 publishEvent 到监听器执行的同步调用链,说明 @TransactionalEventListener 如何绑定事务阶段,以及异步监听器与事务事件结合时的陷阱。读者将学会正确使用事件机制,避免事务不一致。