AOP的定義和原理

1、本課目標

  • 理解Spring AOP的原理
  • 掌握Spring AOP的七個術語

2、面向切面編程(AOP)

 AOP的思想是,不去動原來的代碼,而是基於原來代碼產生代理對象,經過代理的方法,去包裝原來的方法,就完成了對之前方法的加強。換句話說,AOP的底層原理就是動態代理的實現。
 
image.png

在上面這個圖中的代碼中,業務代碼就紅框中的那些,其餘的代碼都是作一些其餘的事情,可是這些代碼還不得不寫,而且這些代碼散佈在咱們系統的各處。咱們把這樣的的代碼叫作橫切邏輯,也叫橫切關注點;把咱們的業務代碼叫作核心關注點。可是咱們構建系統的目的是爲了解決業務問題,如今卻要維護多個方面的事情,怎麼樣才能「專心」作事情?這就是AOP的目標:讓咱們「專心作事」。編程

2.1AOP原理

第1、將複雜的需求分解出不一樣的方面,將公共功能集中解決。

 
image.png

 

在上圖中,中間的是咱們的代碼,AOP就是將這些分離,包括權限,日誌和持久化等等。spa

第2、採用代理機制組裝起來運行,在不改變原程序的基礎上對代碼段進行加強處理,增長新的功能

 
image.png

綜上、所謂面向切面編程,是一種經過預編譯方式和運行期動態代理實如今不修改源代碼的狀況下給程序動態添加功能的技術。代理

2.2AOP相關術語

一、加強處理:前置加強、後置加強、環繞加強、異常拋出加強、最終加強等類型
二、切入點
三、鏈接點
四、切面
五、目標對象
六、AOP代理
七、織入日誌

一、加強處理

 
image.png

二、切入點

經過一個表達式告訴SpringAOP去哪一個地方進行加強。也能夠把這個表達式理解爲一個查詢條件,系統會根據這個查詢條件查詢到咱們要進行加強的代碼位置。orm

三、鏈接點

就是SpringAOP經過告訴它的切入點的位置找的的具體的要加強的代碼的位置,這個代碼位置就是鏈接點。對象

四、切面

切面由一組(加強處理和切入點)共同構成。io

五、目標對象

目標對象就是被加強的目標類。咱們也稱之爲委託類。編譯

六、AOP代理

 
image.png

 

代理類就是AOP代理,裏面包含了目標對象以及一些加強處理。系統會用AOP代理類代替委託類去執行功能。form

七、織入

織入就是將咱們的加強處理加強到指定位置的過程。class

相關文章
相關標籤/搜索