因为这:
在代理模式下(默认),将仅拦截通过代理传入的“外部”方法调用。这意味着即使调用的方法标记有@Transactional,“自调用”(即目标对象中的方法调用目标对象的其他方法)也不会在运行时导致实际事务!
还有这个:
由于Spring的AOP框架基于代理的性质,因此,无论是JDK代理(不适用)还是CGLIB代理(在技术上可行但不建议用于AOP的目的),定义上都不会拦截受保护的方法。结果,任何给定的切入点将仅与公共方法匹配!
Spring的家伙可能希望与JDK代理保持一致。您不希望基于JDK和CGLIB具有不同的代理配置和不同的结果。



