springAOP機制

AOP編程思想及術語

AOP是面向切面的編程,其編程思想是把散佈於不同業務但功能相同的代碼從業務邏輯中抽取出來,封裝成獨立的模塊,這些獨立的模塊被稱爲切面,切面的具體功能方法被稱爲關注點。在業務邏輯執行過程中,AOP會把分離出來的切面和關注點動態切入到業務流程中,這樣做的好處是提高了功能代碼的重用性和可維護性。

例如,前面案例的VerifyUser類就是切面,VerifyUser類的beforeAdvice就是關注點。VerifyUser切面的功能就是驗證老師身份,可以應用到與老師相關的不同業務流程中。AopEmailNotice是一個業務類,負責發送通知給老師,在發送通知之前需要驗證老師的身份。AOP會在AopEmailNotice類的setTeacher方法執行之前,將beforeAdvice關注點切入到AopEmailNotice業務類中,並執行beforeAdvice方法。

Spring框架提供了@AspectJ 註解方法和基於XML架構的方法來實現AOP。前面的案例是基於XML架構的方法,後面一節會講述基於@AspectJ 註解的方法。下面結合前面的案例講述一下AOP的相關術語。

● Aspect

表示切面。切入業務流程的一個獨立模塊。例如,前面案例的VerifyUser類,一個應用程序可以擁有任意數量的切面。

● Join point

表示連接點。也就是業務流程在運行過程中需要插入切面的具體位置。例如,前面案例的AopEmailNotice類的setTeacher方法就是一個連接點。

● Advice

表示通知。是切面的具體實現方法。可分爲前置通知(Before)、後置通知(AfterReturning)、異常通知(AfterThrowing)、最終通知(After)和環繞通知(Around)五種。實現方法具體屬於哪類通知,是在配置文件和註解中指定的。例如,VerifyUser類的beforeAdvice方法就是前置通知。

● Pointcut

表示切入點。用於定義通知應該切入到哪些連接點上,不同的通知通常需要切入到不同的連接點上。例如,前面案例配置文件的<aop:pointcut>標籤。

● Target

表示目標對象。被一個或者多個切面所通知的對象。例如,前面案例的AopEmailNotice類。

● Proxy

表示代理對象。將通知應用到目標對象之後被動態創建的對象。可以簡單地理解爲,代理對象爲目標對象的業務邏輯功能加上被切入的切面所形成的對象。

● Weaving

表示切入,也稱爲織入。將切面應用到目標對象從而創建一個新的代理對象的過程。這個過程可以發生在編譯期、類裝載期及運行期。

更多免費技術資料可關注:annalin1203

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