一、本課目標
- 理解Spring AOP的原理
- 掌握Spring AOP的七個術語
二、面向切面編程(AOP)
AOP的思想是,不去動原來的代碼,而是基於原來代碼產生代理對象,通過代理的方法,去包裝原來的方法,就完成了對以前方法的增強。換句話說,AOP的底層原理就是動態代理的實現。
image.png
在上面這個圖中的代碼中,業務代碼就紅框中的那些,其他的代碼都是做一些其他的事情,但是這些代碼還不得不寫,並且這些代碼散布在我們系統的各處。我們把這樣的的代碼叫做橫切邏輯,也叫橫切關注點;把我們的業務代碼叫做核心關注點。但是我們構建系統的目的是為了解決業務問題,現在卻要維護多個方面的事情,怎么樣才能“專心”做事情?這就是AOP的目標:讓我們“專心做事”。
2.1AOP原理
第一、將復雜的需求分解出不同的方面,將公共功能集中解決。
image.png
在上圖中,中間的是我們的代碼,AOP就是將這些分離,包括權限,日志和持久化等等。
第二、采用代理機制組裝起來運行,在不改變原程序的基礎上對代碼段進行增強處理,增加新的功能
image.png
綜上、所謂面向切面編程,是一種通過預編譯方式和運行期動態代理實現在不修改源代碼的情況下給程序動態添加功能的技術。
2.2AOP相關術語
1、增強處理:前置增強、后置增強、環繞增強、異常拋出增強、最終增強等類型
2、切入點
3、連接點
4、切面
5、目標對象
6、AOP代理
7、織入
1、增強處理
image.png
2、切入點
通過一個表達式告訴SpringAOP去哪個地方進行增強。也可以把這個表達式理解為一個查詢條件,系統會根據這個查詢條件查詢到我們要進行增強的代碼位置。
3、連接點
就是SpringAOP通過告訴它的切入點的位置找的的具體的要增強的代碼的位置,這個代碼位置就是連接點。
4、切面
切面由一組(增強處理和切入點)共同構成。
5、目標對象
目標對象就是被增強的目標類。我們也稱之為委托類。
6、AOP代理
image.png
代理類就是AOP代理,里面包含了目標對象以及一些增強處理。系統會用AOP代理類代替委托類去執行功能。
7、織入
織入就是將我們的增強處理增強到指定位置的過程。
