天天看點

Spring的AOP:Pointcut、Advice、Advisor

1:Pointcut

在介紹Pointcut之前,有必要先介紹  Join  Point(連接配接點)概念。

連接配接點:程式運作中的某個階段點,比如方法的調用、異常的抛出等。比如方法doSome();

Pointcut是JoinPoint的集合,它是程式中需要注入Advice 的位置的集合,指明Advice要在什麼樣的條件下才能被觸發。

               org.springframework.aop.pointcut接口用來指定到特定的類和方法,

package org.springframework.aop;

public interface Pointcut {    
    //擷取類過濾器 用來将切入點限定在給定的目标類中    
    ClassFilter getClassFilter();    
  
    //擷取比對切入點的方法 用來判斷切入點是否比對目标類的給定的方法       
    MethodMatcher getMethodMatcher();    
  
    //總比對的标準切入點執行個體    
    Pointcut TRUE = TruePointcut.INSTANCE;    
}   
           

在Pointcut接口中主要有兩個接口:ClassMatcher和MethodMatcer,有利于代碼的重用。

2:Advice  

它是某個連接配接點所采用的處理邏輯,也就是向連接配接點注入的代碼。例如:輸出的日志資訊   就是一個Advice

Advice通知是AOP聯盟定義的一個接口,定義當攔截到連接配接點做相應的處理操作,為切面增強提供織入接口。在spring AOP中,通知主要描述Spring AOP圍繞方法調用而注入切面的行為,Spring AOP的通知擴充了AOP聯盟的通知接口,提供了前置通知BeforeAdvice、後置通知AfterReturningAdvice、最終通知AfterAdvice和例外通知ThrowsAdvice等。

3:Advisor

Advisor是Pointcut和Advice的配置器,它包括Pointcut和Advice,是将Advice注入程式中Pointcut位置的代碼

當完成對目标對象方法的增強行為操作(Advice)和切入點Point的設計開發之後,需要一個對象将目标對象、增強行為和切入點三者結合起來,通知器Advisor就是一個實作這個功能的對象,即通過Advisor通知器,可以定義那些目标對象的那些方法在什麼地方使用這些增加的行為。

繼續閱讀