Spring 3.0 AOP 之 AOP 術語 (一)

weixin_34067049發表於2016-01-26

  關於AOP、之前我已寫過一個系列的隨筆: 《自己實現簡單的AOP》,它的關注點在於實現、實現語言是C#,實現方式為 自定義實現 RealProxy 抽象類、重寫Invoke方法,以便進行方法呼叫的攔截、藉此實現AOP。感興趣的園友可以去瞅瞅。

  今天、我們來看一下Spring中的AOP,本隨筆著重關注AOP術語。

  先說一句廢話:如果你對AOP不是很熟悉、第一次看到這些術語可能會有點迷惑,不過沒有關係、堅持繼續向下看,然後再反過來看一遍,有些東西就能恍然大悟了。

連線點(Joinpoint) 

   連線點:連線點、點,它是一個位置、是指程式執行的特定位置,如:類初始化前、類初始化後、某個方法執行前、某個方法執行後、方法丟擲異常之後 等等位置。而,Spring僅支援 方法的連線點, 即僅可以在方法執行前、方法執行後、方法丟擲異常時 及  方法執行前後 4 類連線點。

   我們都知道黑客攻擊系統都需要找到突破口,如果沒有突破口就沒法進行攻擊。在某種程度上來說、AOP有點像黑客(因為它要向程式中織入程式碼邏輯),而連線點就是這個突破口。

  連線點需要由兩點資訊來確定:一個是 方法 。第二個是 相對於方法的執行方位(比如:方法執行“前”、方法執行“後”、方法執行“前後”、方法丟擲異常“時”)。【執行方位  存在於 增強中】

 

切點(Pointcut) 

  我(本隨筆作者)對切點的理解為,切點:查詢連線點的條件,更確切一點是查詢連線點所表示的方法的條件。

 

增強(Advice) 

   增強:即一段程式碼,是想要織入的程式碼邏輯。 並且還附帶了  相對於方法的執行方位。

   因此:切點 + 增強中的  相對於方法的執行方位  = 連線點。  

目標物件(Target) 

    是需要織入增強的目標類。

引介(Introduction) 

   引介:引介是一種特殊的增強:它可以為目標類增加屬性和方法,以此、可以實現新介面。

織入(Weaving) 

   織入:織入是將增強新增到目標類具體連線點上的過程,AOP就像一臺織布機,將目標類、增強或引介通過AOP這臺織布機天衣無縫地編織在一起。

代理(Proxy) 

   一個類被AOP織入增強後,就產生了一個結果類,這個結果類就是代理。它融合了原類和增強邏輯。代理類 和 原類 擁有相同的介面,所以可以像原類一樣呼叫代理類。

切面(Aspect) 

  切面由 切點 和 增強(或引介)組成,它既包括了橫切邏輯、也包含了連線點的定義,Spring AOP 就是負責實施切面的框架,它將切面所定義的橫切邏輯織入切面中所指定的連線點上。 

  AOP 的工作重心在於如何將增強應用於目標物件的連線點上。這裡包含兩個工作:

  1、如何通過切點 和 增強 定位連線點。

  2、如何在增強中編寫橫切邏輯程式碼。

  本系列隨筆將重點圍繞破以上兩點來展開進行。

 

  宣告:《Spring 3.0 AOP》 系列隨筆為《Spring 3.0 就是這麼簡單》讀書筆記、並附加作者自己的認知。

  (未完待續...)

 

相關文章