Spring之AOP面向切面程式設計

附子Jun發表於2020-11-10

Spring之AOP面向切面程式設計

學習內容:

一、AOP簡述

AOP簡介

AOP:面向切面程式設計,主要應用在業務邏輯層,降低模組之間的耦合性

給個栗子來理解

一個系統有A、B、C、D四個功能,其中B、C、D的實現都需要用到A,在程式碼中的體現也就是需要將A的程式碼重複寫到BCD中,這樣一方面程式碼冗餘,另一方面耦合性高(A程式碼有變動,還得手動改BCD的程式碼)。因此使用AOP來解決,就是將ABCD寫在單獨類中,只讓它們在執行的時候能互相呼叫。

動態代理技術

在這裡插入圖片描述

二、具體技術實現

基於JDK程式碼實現

  1. 在main-java下新建一個包com.jdk
  2. 在該包下新建一個目標介面和一個實現類,再建一個對目標類的增強類。

介面類在這裡插入圖片描述
實現類在這裡插入圖片描述
增強類
在這裡插入圖片描述

  1. 在同一個包下 新建一個測試類,具體程式碼如下。
    沒有使用增強的寫法:
    在這裡插入圖片描述
    使用增強的寫法:
    在這裡插入圖片描述

  2. 執行結果

在這裡插入圖片描述

基於cglib的增強:

  1. 新建一個包,名為cglib,將jdk包下的Target,Advice,ProxyTest複製過來
  2. 更改ProxyTest裡面的引數

在這裡插入圖片描述
在這裡插入圖片描述

三、補充相關解釋

在這裡插入圖片描述
連線點就是可以被增強的方法,將方法成為點。

在這裡插入圖片描述

相關文章