1. 程式人生 > >Spring AOP的實現:知識框架總結

Spring AOP的實現:知識框架總結

通過對於這本圖書的學習,我發現其實關於每一個部分的程式碼的解析不是按照AOP的具體實現流程來進行,而是通過對於某一個模組的解析來模組化地講解知識。所以在新手比如我在學習的過程中,會有很多很多疑惑的地方。所以當我學完這一章之後,我希望通過畫一張圖,來解析整個AOP的實現流程。

首先我們先畫一個最基本的資料結構,也就是我的部落格中提到的三個類

 這三個資料結構貫穿了AOP的始終。是AOP實現加強的重要類。

之後書上是講述了AopProxy(代理物件)的建立,書上為我們舉了ProxyFactoryBean物件的配置以及具體的 方法實現。

我們同樣可以根據一張圖來研究。

AopProxy是在getObject()方法中實現的,在這個方法的實現中。分為兩個步驟,一個是advistor鏈的新增,一個對應代理物件生成。

其中advistor鏈的新增就是在initializeAdvisorChain中實現的

之後就是AOP初始化過程的重頭戲,也就是我們的Proxy代理物件的生成,這裡面涉及到了攔截器鏈的生成,也就是根據advistor鏈對相應的方法進行相應的加強。

現在我們來看一下整個代理物件的生成。

 

代理物件需要實現InvocationHandler的invoke方法,在這個invoke方法中實現了攔截器鏈的生成。我們來看一下整個invoke方法

 這些當然只是圖例,作為複習時的一個流程圖解。關於AOP的原始碼解析我理解的就是這些。下一部分我不打算按照書上的順序來敘述springmvc,我選擇講解事務。因為事務和我們面向切面的思想以及代理模式是息息相關的。