在上面這個圖中的代碼中,業務代碼就紅框中的那些,其餘的代碼都是作一些其餘的事情,可是這些代碼還不得不寫,而且這些代碼散佈在咱們系統的各處。咱們把這樣的的代碼叫作橫切邏輯,也叫橫切關注點;把咱們的業務代碼叫作核心關注點。可是咱們構建系統的目的是爲了解決業務問題,如今卻要維護多個方面的事情,怎麼樣才能「專心」作事情?這就是AOP的目標:讓咱們「專心作事」。編程
在上圖中,中間的是咱們的代碼,AOP就是將這些分離,包括權限,日誌和持久化等等。spa
綜上、所謂面向切面編程,是一種經過預編譯方式和運行期動態代理實如今不修改源代碼的狀況下給程序動態添加功能的技術。代理
一、加強處理:前置加強、後置加強、環繞加強、異常拋出加強、最終加強等類型
二、切入點
三、鏈接點
四、切面
五、目標對象
六、AOP代理
七、織入日誌
經過一個表達式告訴SpringAOP去哪一個地方進行加強。也能夠把這個表達式理解爲一個查詢條件,系統會根據這個查詢條件查詢到咱們要進行加強的代碼位置。orm
就是SpringAOP經過告訴它的切入點的位置找的的具體的要加強的代碼的位置,這個代碼位置就是鏈接點。對象
切面由一組(加強處理和切入點)共同構成。io
目標對象就是被加強的目標類。咱們也稱之爲委託類。編譯
代理類就是AOP代理,裏面包含了目標對象以及一些加強處理。系統會用AOP代理類代替委託類去執行功能。form
織入就是將咱們的加強處理加強到指定位置的過程。class