spring學習(七):AOP

一、AOP和 OOP

OOP:面向對象編程

AOP:面向切點編程

AOP的適用範圍:如性能監測、事務控制、訪問管理及事務控制等

二、AOP術語

  1. 連接點(JoinPoint):如類開始初始化前,類初始化後、類的某個方法執行前/執行後、方法拋出異常後。一個類或一段程序代碼擁有一些具有邊界性質的特定點,稱爲連接點。連接點由兩個信息確定:
    1. 用方法表示的程序執行點
    2. 用相對位置表示的方位:如Test.foo()方法執行前的連接點,執行點爲Test.foo(),方位爲該方法執行前的位置
  2. 切點(PointCut):藉助數據庫查詢的概念來理解。連接點相當於每條記錄,而切點則相當於查詢條件。一個切點可以匹配多個連接點。
  3. 增強(Advice):增強是織入目標類連接點上的一段程序代碼。
  4. 目標對象(Target):增強邏輯織入的目標類
  5. 引介(Introduction):引介是一種特殊的增強,它爲類添加一些特殊的屬性和方法
  6. 織入(Weaving):織入是將增強添加到目標類連接點上的過程,三種織入方式
    1. 編譯期織入:要求使用特殊的java編譯器
    2. 類裝載期織入:要求使用特殊的類裝載器
    3. 動態代理織入:在運行期爲目標類添加增強生成子類的方式
    4. Spring採用動態代理,而AspectJ採用編譯期織入和類裝載期織入
  7. 代理(Proxy):
  8. 切面(Aspect):由切點和 增強(引介)組成。既包含橫切邏輯的定義,也包括連接點的定義

三、SpringAOP

兩種代理機制:

  • 基於JDK動態代理:只支持接口代理
  • 基於CGLib動態代理:由於採用動態代理生成子類的方式,不能對目標類中的final和private方法進行代理。(比JDK動態代理的性能高出10倍左右)

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章