通過自定義配置完成了對AnnotationAwareAspectJAutoProxyCreator類型的自動注冊,那麼這個類到底做了什麼工作來完成AOP的操作呢?首先我們看看AnnotationAwareAspectJAutoProxyCreator類的層次結構
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuEGZ3EDZjdDM2YmNzcDO4EWMjZmMjFjYmNWM2EGO3IDOfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
在類的層級中,我們看到AnnotationAwareAspectJAutoProxyCreator實作了BeanPostProcessor接口,而實作BeanPostProcessor後,當Spring加載這個Bean時會在執行個體化前調用其postProcessAfterInitialization方法,而對于AOP邏輯的分析也由此開始。
函數中我們已經看到了代理建立的雛形。當然,真正開始之前還需要經過一些判斷,比如是否已經處理過或者是否是需要跳過的bean,而真正建立代理的代碼是從getAdvicesAndAdvisorsForBean開始的。
建立代理主要包含了兩個步驟:
(1)擷取增強方法或者增強器;
(2)根據擷取的增強進行代理。