10 20 Spring框架(三) AOP核心

2022-07-26 21:24:14 字數 1309 閱讀 5791

aop(aspect oriented programming)的縮寫,翻譯為面向切面程式設計或面向方面程式設計,通過預編譯方式和執行期動態**實現程式功能的統一維護的一種技術。

aop(面向切面程式設計)和oop(物件導向程式設計)是不同領域的兩種設計思想

oop(物件導向程式設計)

針對業務處理過程中屬性和行為進行抽象和封裝,以復用**、降低系統複雜度。

aop(面向切面程式設計)

針對業務處理過程中的切面進行橫向提取,以隔離業務、降低業務之間的耦合度。

1.日誌記錄

2.效能統計

3.安全控制 主要針對安全許可權

4.事務處理

5.異常處理

6.其他功能

連線點aop插入**的特定位置(方法呼叫前,方法呼叫後,方法呼叫前後,丟擲異常)

切點aop定位或查詢連線點的方式(乙個切點可以匹配多個連線點)

增強aop插入到連線點的一段**程式(前置增強、後置增強、環繞增強和丟擲異常增強)

引介特殊的增強(可以為類新增一些屬性和方法)

織入插入**的過程(aop三種方式:編譯器織入,類裝載器織入,動態**織入)

切面由切點和增強或引介組成。(spring aop是負責實施切面的框架)

3.1註解

– 開啟 aop 註解開關 --

>

<

aop:aspectj-autoproxy

/>

@aspect 註解:放置於切面類上,用於註解定義乙個切面

@before 註解:放置於切面類方法上,用於註解實現前置增強

@after 註解:放置於切面類方法上,用於註解實現後置增強

@around 註解:放置於切面類方法上,用於註解實現環繞增強

@afterthrowing 註解:放置於切面類方法上,用於註解實現丟擲異常增強

3.2切點表示式

切點表示式 = execution(返回值型別 + 包名 + 類名 + 方法名 + 引數個數)

切點表示式支援三個萬用字元:

符號(*):代表任意字元,匹配上下文中的乙個元素

符號(..):代表任意字元,可以代表多個元素,但是在表示類的時候不能單獨使用,必須和 * 配合;在代表形參的時候可以單獨使用

符號(+):代表按型別匹配指定類的所有類(包括子類),只能跟在類名的後面

舉例:execution(* com.dt..dog.b(..))

Spring框架 三 spring IOC的使用

1 使用無參構造的方式建立物件 在spring的配置檔案中使用bean標籤,配以id和class屬性之後,且沒有其他屬性和標籤時。注意 建立物件id必須唯一 2 使用靜態工廠的方式建立物件 使用某個類中的靜態方法建立物件,並存入spring容器 factory method屬性 指定乙個靜態方法名 ...

Spring框架(三)AOP切面程式設計

ioc控制反轉完成了解耦合,那麼功能擴充套件就交由我aop切面程式設計來完成吧 當前某一類下有三個方法名曰 func1 func2 func3 在實現方法中我們依次呼叫,那麼執行結果則是豎向呼叫。可現在面臨的問題是 專案的整體架構已經完成,我們需要在不破壞原先設計的條件下去新增新的功能,這該怎麼實現...

Spring框架中的設計模式(三)

這篇文章的第乙個設計模式是原型。可以通過官方文件查詢有關spring作用域中的bean作用域的文章中介紹了類似的概念 prototype 原型設計模式與有用相同名稱的 prototype 作用域有點相似。此設計模式允許通過複製已存在的物件來建立乙個物件的例項。副本應該是真正的副本。這意味著新物件的所...