发现一个有趣的地方,以前在开发中经常遇到的情况。
现象:
关于expose-proxy的解释:
this指向目标对象,因此调用this.b()将不会执行b事务切面,即不会执行事务增强。
spring @Transaction 在refresh过程中,通过CglibProxy或者JdkProxy来获取被代理的代理类,执行事务切面方法的时候,method.invoke,这个时候是不会再获取CglibProxy或者JdkProxy的,也就是说纯纯就只是代理类对象.方法.invoke方式执行,当方法中的方法也是如此。不会再去强行获取CglibProxy或者Jdkproxy。
spring事务源码级别分析: