下图是代理对象调用示意图(引自Spring官方文档):

查看大图

代理对象调用示意图

接下来,我们看下Jdk版代理对象是如何运行的。时序图如下:

提示:    
    ReflectiveMethodInvocation是AOP的核心---方法执行。

动态代理对象运行分析-Jdk版时序图如下:

查看大图

动态代理对象运行分析-Jdk版时序图

接下来我们看下,如何执行织入逻辑调用链,并最终执行目标方法的。ReflectiveMethodInvocation该类太重要了,大家要用心去看下面这个时序图:

查看大图

ReflectiveMethodInvocation时序图

下面这个图是ReflectiveMethodInvocation运行时形象表示。其中红点表示目标方法,执行时从圆外沿半径往圆心执行,每个圈表示一个织入逻辑,目标方法执行完后,原路返回。

ReflectiveMethodInvocation示意图

ReflectiveMethodInvocation部分源代码截图:

查看大图

Spring设计亮点-ReflectiveMethodInvocation源代码

相信大家对Jdk版动态代理实现的AOP已经了然于心,空的时候多读几遍会更好,那我们接下来再看看:动态代理对象运行分析-Cglib版

快速导航: