Spring AOP 簡述

Spring AOP 主要用於實現業務和事務解耦。
例如用於實現性能監控,事務管理

實現原理:
Spring AOP 是使用動態代理在運行期間植入增強的功能代碼。

JDK代理的侷限:只能爲接口創建代理實例。
CGLib採用字節碼技術,可以爲類創建一個子類,並在子類創建方法攔截父類所有的方法,並植入橫切邏輯。

Spring AOP的底層是通過使用JDK動態代理或者CGLib動態代理爲目標bean植入橫切邏輯的。

AOP的一些基本術語

  • 連接點:程序執行的某個特定位置:如類初始化的前後,函數調用的前後,方法拋出異常的前後。Spring僅支持方法調用的前後的連接點。

  • 切點:定位連接點的條件(猶如SQL的查詢條件)

  • 增強:是植入到目錄類連接點上的一段程序
  • 目標對象(Target):增強邏輯需要植入的目錄類
  • 引介(Introduction):是一種特殊的增強,可以爲類添加屬性和方法。
  • 植入(Weaving):是將增強添加到目錄類中連接點的動作

- 代理(Proxy):幫助(代理)目標類完成增強功能的工具類

常用的增強有:
1. 前置增強:在目標類的方法執行之前嵌入增強邏輯,實現接口 MethodBeforeAdvice
2. 後置增強:在目標類的方法執行之後嵌入增強邏輯,實現接口 AfterReturningAdvice
3. 環繞增強: 在目標類的方法前後嵌入增強邏輯,實現接口 MethodInterceptor
4. 異常拋出增強:當拋出異常之前執行,常用於事務處理的回滾,實現接口ThrowsAdvice
5. 引入增強:
是一種比較特殊的增強類型,不是在目標方法周圍植入增強,而是爲目標類創建新的方法和屬性,所以引入增強的連接點是類級別的,而非方法級別。
通過引入增強,我們可以爲目標類添加一個接口的實現(即目標類可能爲實現的接口),通過引入增強代理實現新的功能。繼承 DelegatingIntroductionInterceptor

發佈了54 篇原創文章 · 獲贊 15 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章