1. 程式人生 > >Spring與AOP

Spring與AOP

AOP(Aspect Orient Programming),面向切面程式設計,是面向物件程式設計OOP的一種補充。面向物件程式設計是從靜態角度考慮程式的結構,而面向切面程式設計是從動態角度考慮程式執行過程。

AOP底層,就是採用動態代理模式實現的。採用了兩種代理:JDK的動態代理,與CGLIB的動態代理

面向切面程式設計,就是將交叉業務邏輯封裝成切面,利用AOP容器的功能將切面織入到主業務邏輯中。所謂交叉業務邏輯是指,通用的、與主業務邏輯無關的程式碼,如安全檢查、事務、日誌等。

 

AOP程式設計術語

(1)切面(Aspect):切面泛指交叉業務邏輯。上例中的事務處理、日誌處理就可以理解為切面。常用的切面有通知與顧問。實際就是對主業務邏輯的一種增強。

(2)織入(Weaving):織入是指將切面程式碼插入到目標物件的過程。

(3)連線點(JoinPoint):連線點指可以被切面織入的方法。通常業務介面中的方法均為連線點。

(4)切入點(Pointcut):切入點指切面具體織入的方法。被標記為final的方法是不能作為連線點與切入點的。因為最終的是不能被修改的,不能被增強的。

(5)目標物件(Target):目標物件指將要被增強的物件。即包含業務邏輯的類的物件。

(6)通知(Advice):通知是切面的一種實現,可以完成簡單織入功能(織入功能就是在這裡完成的)。通知定義了增強程式碼切入到目的碼的時間點,是目標方法執行之前執行,還是之後執行等。通知型別不同,切入時間不同。切入點定義切入位置,通知定義切入的時間

(7)顧問(Advisor):顧問是切面的另一種實現,能夠將通知以更為複雜的方式織入到目標物件中,是將通知包裝為更復雜切面的裝配器。