AOP的成員介紹

AOP(Aspect Oriented Programming)面向切面編程,AOP的作用不過多介紹,本文是主要是介紹AOP的成員,是我在複習的時候記錄的一些筆記,方便以後查閱方便一些。

JointPoint(連接點),在系統運行的之前,AOP的功能模塊都需要織入到OOP的功能模塊上,JointPoint就代表了在哪些執行點上進行織入操作的點。JointPoint可以是類的初始化、方法的調用、方法的執行、方法的調用、字段設置、字段獲取、異常處理執行等。下面舉例說明:


ContractedBlock.gifView Code
複製代碼
publicclass Main{  publicstaticvoid main(String[] args)  {    //JointPointTest類見上面代碼
     JointPointTest jointPointTest
= new JointPointTest();//構造方法執行 jointPointTest.setName("aaa");//字段設置(通過set方法與直接賦值的觸發時間是相同的) jointPointTest.getName();//字段獲取 jointPointTest.toDo();//方法調用。方法執行即進入toDo方法的內部,對於同一對象方法的調用要早與方法的執行。
     //異常處理執行,即當某些類型異常拋出的時候,對應的異常處理邏輯執行點。
     //類的初始化, 類的靜態類型或者靜態塊的初始化時點。    }}
複製代碼

Pointcut(切入點),簡單的理解就是JointPoint的集合。Pointcut代表的是JointPoint的表述方式,當橫切邏輯織入到當前系統的時候,需要參照Pointcut規定的JointPoint信息。

    Pointcut的表述方式有很多:

    1.直接指定JointPoint所在方法名稱。(一般不用,因爲配置較多的情況比較不好表述。)

    2.正則表達式。

    3.使用特定的Pointcut表述語言。例如AspectJ,Spring默認使用的就是AspectJ的Pointcut表述語言。

    Pointcut運算(Pointcut與Pointcut之前還可以進行邏輯運算,這樣我們就可以得到我們需要的較爲複雜的Pointcut),不同的AOP實現產品不同,所以運算的表達方式不盡相同。

Advice(通知),Advice很好理解就是JointPoint的執行時機。

    可以分爲:

      1. 前置通知(before advice):在JointPoint指定位置之前執行。

      2. 後置通知(after advice):在JointPoint指定位置之後執行。分爲以下三種:

        1) after return advice :只有當前JointPoint處流程正常結束後才執行after return advice。(即沒有異常出現)

        2) after throwing advice :只有當前JointPoint處流程拋出異常時候才執行after throwing advice。

        3) after advie :或許叫after finally advice比較準確,它是不管當前JointPoint是否正常結束都會執行,就像JAVA當中的finally塊中的代碼一樣。

      3. 環繞通知(around advice):可以再JointPoint之前和之後都指定相應的處理流程。

      4. introduction:與其他的通知不同,introduction不是根據JointPoint的執行時機來區分的,而是根據它可以完成的功能而區別其他的advice。

Aspect(切面),是對系統的advice與pointcut進行模塊化封裝的AOP概念實體。可以包含多個pointcut與advice的相關定義。AspectJ可以使用@AspectJ註解並且結合普通的POJO來聲明Aspect。

  上面介紹的就是AOP的基本成員,雖然是自己便於以後查閱,但是同時希望對大家有所幫助。


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