Spring AOP框架體系小結

2021-08-13 22:06:29 字數 2136 閱讀 2095

一、這裡先列舉一些aop基本概念,後面提到再作相應解釋

1)目標物件 target

2)**物件 proxy

3)切點 pointcut

4)增強 advice

5)切面 advisor

6)織入器:將增強邏輯嵌入到目標物件的切點位置上從而生成**物件的工具,相當於連線目標物件和**物件的橋梁

二、說到框架體系,就要從底層慢慢往上做抽象,那就先從設計模式和實現機制講起:

spring aop的設計模式是**模式

1.靜態**:在編譯時就給每個需要增強的目標物件編寫出對應的**物件,缺點是如果增強的邏輯都一樣,那麼每個**物件之間就有很多重複性的**。

2.動態**:在系統執行時才給目標物件建立**物件,克服了靜態**的缺點,增強的邏輯**只需寫一遍。

三、spring aop採用動態**模式,實現機制有兩種:

1)基於介面的jdk自帶的動態**元件,這裡主要包括invocationhandler和proxy兩個類

2)基於類的cglib類庫的動態位元組碼增強技術,通過建立目標類的子類,擴充套件生成**物件,這裡主要包括methodinterceptor(net.sf.cglib.proxy.methodinterceptor)和enhancer兩個類

四、spring aop織入器

spring aop中的最基本的織入器是proxyfactory,其內部就是使用jdk或cglib動

態**技術將增強織入到目標類中:cglib2aopproxy和jdkdynamicaopproxy。

五、spring aop增強的五種型別:

1)前置增強:beforeadvice

2)後置增強:afterreturningadvice

3)環繞增強:methodinterceptor(org.aopalliance.intercept.methodinterceptor)

4)異常丟擲增強:throwsadvice

5)引介增強:introductioninterceptor,這個比較特殊,表示在目標類中新增一些新的方法和屬性

六、切點 pointcut

假設我們希望有選擇地織入目標類的某些特定方法,就需要使用切點進行這些特定

方法的定位。spring aop通過pointcut這個介面描述切點,

pointcut由classfilter和

methodmatcher構成,通過

classfilter定位到目標類,通過methodmatcher定位到目標

類的特定方法。

七、切面advisor

切面advisor由增強advice和切點pointcut構成,由於增強的不同又分為

pointcutadvisor和introductionadvisor。前者最常見的實現是

defaultpointcutadvisor,

可由任意的pointcut和advice構成,唯一不支援的是引介

增強,所以有了後者。前面

說了這個

引介增強introductioninterceptor很特殊,這裡

展開講講:

通過引介增強,可以為目標類新增乙個介面的實現,即原來目標類未實現某個介面

,通過引介增強可以為目標類建立實現某介面的**。spring定義了引介增強介面

introduction

interceptor

,但沒有定義任何方法。spring為該介面提供了

delegatingintroductioninterceptor實現類,一般情況下,通過繼承該類來定義自己的

引介增強類。

而引介切面最常見的實現是

default

introductionadvisor。

八、自動建立**

spring aop建立在spring ioc基礎上,所以能夠享受到很多spring容器帶來的便利

功能,其中之一就是spring提供自動**機制,讓容器自動生成**,把開發人員從繁

瑣的配置工作解放出來。在內部,spring使用beanpostprocessor自動完成這項工作,

其中最常見最基本的實現是defaultadvisorautoproxycreator。

Spring AOP 核心流程小結

注 initializebean 位於 createbeaninstance 建立 bean 例項和 populatebean 依賴注入 之後 建立封裝了配置資訊的 aopconfig 切點表示式 切面類 前置 後置 環繞通知 將 aopconfig 再封裝成 advisedsupport 包括了上...

Vue框架體系

屬性修飾符 其他關鍵點 一次性插值,當資料內容改變時,插入的資料不會改變。v once 這個將不會改變 span 內容轉為html using mustaches p using v html directive v html rawhtml span p 根據條件切換顯示狀態 v show ok ...

集合框架的體系

最基本的集合介面。遍歷collection集合 呼叫iterator 的方法,返回迭代子,可由迭代子直接訪問每個元素,如下 iterator it collection.iterator 獲得乙個迭代子 while it.hasnext 繼承collection的介面主要有 list,set。繼承自...