Spring學習筆記:面向切面(AOP)的基本定義

一、什麼是面向切面編程?

切面實現了橫切關注點(跨多個應用對象的邏輯)的模塊化

如圖所示,有三個Service,他們中的許多方法都涉及到安全規則、事務規則等類似的規則,面對類似
甚至類似的代碼,我們第一反應肯定是要抽取,以便重用。

Aop, aspect object programming 面向切面編程
功能: 讓關注點代碼(就是指重複執行的代碼)與業務代碼分離!

AOP實際就是面向重複代碼編程,對很多功能都有的重複代碼抽取,在運行的時候往業務方法上動態織入到“切面類代碼”

AOP名詞

1.關注點

我們要抽取的重複代碼就叫做關注點

2.切面(Aspect)

關注點(重複代碼)所形成的類,就叫做切面。
切面是通知和切點的結合,通知和切點共同定義了切面的全部內容——他是什麼,在何時和何處完成其功能

3.通知(Advice)

切面(重複代碼類)的工作被稱爲通知

Spring切面可以應用5種類型的通知:
  1. 前置通知(Before):在目標方法之前調用通知功能
  2. 後置通知(After):在目標方法之後調用的通知,此時不會關心方法的輸出是什麼
  3. 返回通知(After-Retruning):在目標方法成功執行後調用通知
  4. 異常通知(After-throwing):在目標方法拋出異常時調用通知
  5. 環繞通知(Around):通知包裹了被通知的方法,在被通知的方法調用之前和調用之後執行自定義的行爲

4.連接點(Join point)

目標對象中,所有可以增強的方法,我們的應用可能有數以千計的實際應用通知,這些時機被稱爲連接點。(一個班裏有30個人,你可以打電話給這30個同學,那麼連接點就是30個)。
 切點代碼可以利用這些鏈接點插入到應用的正常流程中,並添加新的行爲。

5.切點(Poincut)

在目標對象中,實際增強的方法。(班裏30個同學中,你只聯繫了2個,那麼這兩個就是你的切點)
如果說通知定義了切面的“什麼”和“何時”的話,那麼切點就定義了何處。
我們通常使用明確的類和方法名稱,或是利用正則表達式定義所匹配的類和方法名稱來指定這期切面。

6.織入(Weaving):將通知織入切入點的過程,一般在對象的生命週期裏有多個點可以織入

  1. 編譯期
  2. 類加載期
  3. 運行期
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章