1. 程式人生 > 其它 >AOP概念和術語

AOP概念和術語

  1. Aspect(切面):一個關注點的模組化,這個關注點可能會橫切多個物件。事務管理是J2EE應用中一個關於橫切關注點的很好的例子。

    比如我們關注的是service業務層面的一個方法上下做橫切,對這個方法進行增強。這個方法的上面下面就稱為切面,這個方法就是我們關注的點.把我們關注的點形成模組。

  2. Join point(連線點 ):在程式執行過程中某個特定的點,比如某方法呼叫的時候或者處理異常的時候。

    就是能把你要增強的內容插入的地方稱為連線點。如:

  3. Advice(通知):在切面的某個特定的連線點(Joinpoint)上執行的動作。通知有各種型別,其中包括“around”、“before”和“after”等通知。 通知的型別將在後面部分進行討論。許多AOP框架,包括Spring,都是以攔截器做通知模型, 並維護一個以連線點為中心的攔截器鏈。

    在連結點上插入的語句稱為連線點,在這兩個連線點插入1,2兩條語句就稱為通知

  4. Pointcut(切入點 ):匹配連線點(Joinpoint)的斷言。通知和一個【切入點表】達式關聯,並在滿足這個切入點的連線點上執行。 【切入點表示式如何和連線點匹配】是AOP的核心:Spring預設使用AspectJ切入點語法。

    切入點可以稱為連線點的子集,連線點是說一個方法裡面有哪些地方可以切入,而切入點是指真正切入的地方,如圖,這裡有兩個點可以切入,而我可能只在連線2的位置切入,只在2的位置增強。2的位置就稱為該方法的切入點。

  5. Introduction(引入): Spring允許引入新的介面(以及一個對應的實現)到任何被代理的物件。例如,你可以使用一個引入來使bean實現 IsModified 介面,以便簡化快取機制。

    比如A實現了B介面,沒有實現C,但是可以通過Spring,我們可以指定讓A類的代理實現C介面,並且實現C介面的方法,這也屬於一種增強

  6. Target object(目標物件):被一個或者多個切面(aspect)所通知(advise)的物件。也有人把它叫做 被通知(advised) 物件。 既然Spring AOP是通過執行時代理實現的,這個物件永遠是一個 被代理(proxied) 物件。

     

  7. AOP代理 AOP proxy: 在Spring中,AOP代理可以是JDK動態代理或者CGLIB代理。

     

  8. Weaving(織入):把切面(aspect)連線到其它的應用程式型別或者物件上,並建立一個被通知(advised)的物件,這個過程叫織入。 這些可以在編譯時(例如使用AspectJ編譯器),類載入時和執行時完成。 Spring和其他純Java AOP框架一樣,在執行時完成織入。

    簡單理解就是把通知放在連線點上的過程叫做織入

總結:我們Spring容器通過切點表示式,匹配到對應的連線點,將對應的通知,織入到目標物件形成一個代理物件。

總結:一個切面由切點,通知和切點表示式組成的