?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

ag真人百家家樂是真的嗎:Java編程—Spring AOP本質(6)

?

在前面四個例子中,只要實現一個Advice,然后調用ProxyFactory.addAdvice()措施為代理設定看護,不用設置切入點,從代理對上調用的措施就被看護到了。其緣故原由就在于履行addAdvice()措施時,ProxyFactory會將Advice工具委派給addAdvistor()措施,后臺會自動創建一個DefaultPointcutAdvistor實例,并將Advice加入此中。而默認的DefaultPointcutAdvistor會將切入點設為所有的措施。

要是我們不想經由過程代理來履行某些措施,也便是說,在履行某些措施的時刻不通知,這時刻該若何實現呢?

Spring供給一系列接口來實現這個目標。最主要的接口如下:

implements org.springframework.aop.Pointcut

org.spag真人百家家樂是真的嗎ringframework.aop.ClassFilter

org.springframework.aop.MethodMatcher

下面看看幾個關鍵接口的定義:

1、切入點(Pointcut)

/**

* 切入點

*/

public interface Pointcut {

//切入點的一個單例

public static final ag真人百家家樂是真的嗎Pointcut TRUE = TruePointcut.INSTANCE;

//類過濾器

public ClassFilter getClassFilter();

//措施過濾器

public MethodMatcher getMethodMatcher();

}

/**

* 類過濾器

*/

public interface ClassFilter {

//類過濾器單例

public static finag真人百家家樂是真的嗎al ClassFilter TRUE = TrueClassFilter.INSTANCag真人百家家樂是真的嗎E;

//類匹配措施

public boolean matches(Class class1);

}

/**

* 措施過濾器

*/

public interface MethodMatcher {

//措施過濾器單例

public ag真人百家家樂是真的嗎static final MethodMatcher TRUE = TrueMethodMatcher.INSTANCE;

//靜態措施匹配措施

public boolean matches(Method method, Class class1);

//判斷靜態照樣動態匹配,返回true動態匹配,false靜態匹配

public boolean isRuntime();

//工具(動態)匹配措施

public boolean matches(Method method, Class class1, Object aobj[]);

}

2、看護者(Advisor)

/**

* 看護者接口

*/

public interface Advisor {

//切面是否為per instance

public boolean isPerInstance();

//獲取切面上的看護

public Advice getAdvice();

}

/**

* 看護者子接口,Spring中標準的切面都應該實現此接口

*/

public PointcutAdvisor extends Advisor {

//獲取看護者的切點

public Pointcut getPointcut();

}

為了看的明白,照樣回首一下框架圖:

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

快三平台开户