Spring AOP之通知(advice),連點(connetDoint),切點(pointcut),切點(aspect)

2:面向切面的基本原理

什麼是面向切面編程

橫切關注點:影響應用多處的功能(安全、事務、日誌)

切面

橫切關注點被模塊化爲特殊的類,這些類稱爲切面

優點:

每個關注點現在都集中於一處,而不是分散到多處代碼中 
服務模塊更簡潔,服務模塊只需關注核心代碼。

AOP 術語

§  通知

·        定義:切面也需要完成工作。在 AOP 術語中,切面的工作被稱爲通知。

·        工作內容:通知定義了切面是什麼以及何時使用。除了描述切面要完成的工作,通知還解決何時執行這個工作。

·        Spring 切面可應用的 5 種通知類型:

  1. Before——在方法調用之前調用通知
  2. After——在方法完成之後調用通知,無論方法執行成功與否
  3. After-returning——在方法執行成功之後調用通知
  4. After-throwing——在方法拋出異常後進行通知
  5. Around——通知包裹了被通知的方法,在被通知的方法調用之前和調用之後執行自定義的行爲

§  連接點

·        定義:連接點是一個應用執行過程中能夠插入一個切面的點。

·        連接點可以是調用方法時、拋出異常時、甚至修改字段時、

·        切面代碼可以利用這些點插入到應用的正規流程中

·        程序執行過程中能夠應用通知的所有點。

§  切點

·        定義:如果通知定義了“什麼”和“何時”。那麼切點就定義了“何處”。切點會匹配通知所要織入的一個或者多個連接點。

·        切點相當於使用    連接點    進行       條件過濾後    形成的結果。

·        通常使用明確的類或者方法來指定這些切點。

·        作用:定義通知被應用的位置(在哪些連接點)

§  切面

·        定義:切面是通知和切點的集合,通知和切點共同定義了切面的全部功能——它是什麼,在何時何處完成其功能。

§  引入:

·        引入允許我們向現有的類中添加方法或屬性

§  織入

·        織入是將切面應用到目標對象來創建的代理對象過程。

·        切面在指定的連接點被織入到目標對象中,在目標對象的生命週期中有多個點可以織入

  1. 編譯期——切面在目標類編譯時期被織入,這種方式需要特殊編譯器。AspectJ的織入編譯器就是以這種方式織入切面。
  2. 類加載期——切面在類加載到
  3. JVM ,這種方式需要特殊的類加載器,他可以在目標類被引入應用之前增強該目標類的字節碼。AspectJ5的 LTW 就支持這種織入方式
  4. 運行期——切面在應用運行期間的某個時刻被織入。一般情況下,在織入切面時候,AOP 容器會爲目標對象動態的創建代理對象。Spring AOP 就是以這種方式織入切面。
發佈了31 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章