天天看點

AOP動态代了解析2-代碼織入入口

通過自定義配置完成了對AnnotationAwareAspectJAutoProxyCreator類型的自動注冊,那麼這個類到底做了什麼工作來完成AOP的操作呢?首先我們看看AnnotationAwareAspectJAutoProxyCreator類的層次結構

AOP動态代了解析2-代碼織入入口

在類的層級中,我們看到AnnotationAwareAspectJAutoProxyCreator實作了BeanPostProcessor接口,而實作BeanPostProcessor後,當Spring加載這個Bean時會在執行個體化前調用其postProcessAfterInitialization方法,而對于AOP邏輯的分析也由此開始。

函數中我們已經看到了代理建立的雛形。當然,真正開始之前還需要經過一些判斷,比如是否已經處理過或者是否是需要跳過的bean,而真正建立代理的代碼是從getAdvicesAndAdvisorsForBean開始的。

建立代理主要包含了兩個步驟:

(1)擷取增強方法或者增強器;

(2)根據擷取的增強進行代理。