09-秒殺AOP常用術語,一篇就夠

AOP的常用術語,常常是初學者感覺比較乏味的,下面我們結合上一篇文章的圖來進行對照說明。

建議大家可以先看下後面的圖,再來對比下前面的說明,會更清晰

1,切面(Aspect)

比如上文討論的數據庫事務,這個數據庫事務代碼貫穿了我們的整個代碼,我們就可以這個叫做切面。

SpringAOP將切面定義的內容織入到我們的代碼中,從而實現前後的控制邏輯。

比如我們常寫的攔截器Interceptor,這就是一個切面類

2,通知(Advice)

通知是直譯過來的結果,我個人感覺叫做“業務增強”更合適

對照代碼就是攔截器定義的相關方法,通知分為如下幾種:

前置通知(before):在執行業務代碼前做些操作,比如獲取連接對象

後置通知(after):在執行業務代碼後做些操作,無論是否發生異常,它都會執行,比如關閉連接對象

異常通知(afterThrowing):在執行業務代碼後出現異常,需要做的操作,比如回滾事務

返回通知(afterReturning),在執行業務代碼後無異常,會執行的操作

最後,還有環繞通知(around),這個目前跟我們談論的事務沒有對應的操作,所以暫時不談

3,切點(Pointcut)

切點用於來限定Spring-AOP啟動的範圍,通常我們採用表達式的方式來設置,所以關鍵詞是範圍

4,連接點(Join point)

連接點表示具體要攔截的方法,上面切點是定義一個範圍,而連接點是具體到某個方法

5,織入(weaving)

織入是一個形象的說法,具體來說,就是生成代理對象並將切面內容融入到業務流程的過程。

要理解Spring-AOP,大家一定要理解代理模式,這個很重要。如果大家對代理模式還不是特別瞭解,我會在之後補上這樣的文章。


最後,我們再次以之前的圖來說明這些術語所對應的部分

09-秒殺AOP常用術語,一篇就夠

圖片上傳之後,會變得模糊,大家如果有好的方式,歡迎給我推薦,謝謝!


分享到:


相關文章: