一、JdkDynamicAopProxy的invoke攔截
- JdkDynamicAopProxy的invoke方法作爲proxy對象的回調函數被觸發,對proxy對象的代理設置是在invoke方法中完成的,包括獲取目標對象,攔截器鏈。
- 創建了ReflectiveMethodInvocation對象來完成對aop實現的封裝,來完成一個完整的攔截器鏈對目標對象的攔截過程:攔截器鏈中攔截器配置、逐個運行攔截器鏈的攔截增強,直到對目標方法運行。
二、CglibAopProxy的intercept攔截
CglibAopProxy的intercept回調方法的實現跟JdkDynamicAopProxy回調實現極爲相似,如圖:
但是CglibAopProxy中是構造CglibMethodInvocation來完成攔截器調用,JdkDynamicAopProxy通過構造ReflectiveMethodInvocation對象來完成的。
有意思的是CglibMethodInvocation繼承了ReflectiveMethodInvocation,所以兩種對於攔截器調用基本一致。