aop(aspect oriented programming)的縮寫,翻譯為面向切面程式設計或面向方面程式設計,通過預編譯方式和執行期動態**實現程式功能的統一維護的一種技術。
aop(面向切面程式設計)和oop(物件導向程式設計)是不同領域的兩種設計思想
oop(物件導向程式設計)
針對業務處理過程中屬性和行為進行抽象和封裝,以復用**、降低系統複雜度。
aop(面向切面程式設計)
針對業務處理過程中的切面進行橫向提取,以隔離業務、降低業務之間的耦合度。
1.日誌記錄
2.效能統計
3.安全控制 主要針對安全許可權
4.事務處理
5.異常處理
6.其他功能
連線點aop插入**的特定位置(方法呼叫前,方法呼叫後,方法呼叫前後,丟擲異常)
切點aop定位或查詢連線點的方式(乙個切點可以匹配多個連線點)
增強aop插入到連線點的一段**程式(前置增強、後置增強、環繞增強和丟擲異常增強)
引介特殊的增強(可以為類新增一些屬性和方法)
織入插入**的過程(aop三種方式:編譯器織入,類裝載器織入,動態**織入)
切面由切點和增強或引介組成。(spring aop是負責實施切面的框架)
3.1註解
@aspect 註解:放置於切面類上,用於註解定義乙個切面– 開啟 aop 註解開關 --
>
<
aop:aspectj-autoproxy
/>
@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 作用域有點相似。此設計模式允許通過複製已存在的物件來建立乙個物件的例項。副本應該是真正的副本。這意味著新物件的所...