[英]Spring AOP: Choosing advice seletively
我有兩個建議類,它們實現了MethodInterceptor。 我想將這些建議應用於一個切入點表達,並在調用目標方法時選擇建議。
我認為這是不可能的,所以我做了一個目標類的子類,並為子類使用了切入點表達。
類看起來像:
class SuperClass implements SomeInterface {
public int getZero() {
return 0;
}
}
class SubClass extends SuperClass implements SomeInterface {
}
XML看起來像:
<bean id="subAdvice" class="package.SomeAdvice" />
<aop:config>
<aop:advisor advice-ref="subAdvice" pointcut="execution(* *..SubClass.*(..))"/>
</aop:config>
但subAdvice
當我叫不適用getZero()
通過方法SubClass
,也許是因為有中沒有實現的方法SubClass
。 當我重寫getZero()
方法時它起作用了,但是我不想重寫它,因為實際的SuperClass
有太多的方法,如果我想調用SuperClass
的方法,那是多余的。
我可以將建議應用於未實現方法的子類嗎? 還是有其他好的方法有選擇地應用建議?
我發現我的方法是錯誤的。 我可以將建議僅應用於具有bean
express的子類,如下所示:
<bean id="subAdvice" class="package.SomeAdvice" />
<aop:config>
<aop:advisor advice-ref="subAdvice" pointcut="bean(subClass)"/>
</aop:config>
但是我不需要為此創建一個子類。 我只需要再加上一個豆就可以應用其他建議。 總之,我可以通過制作多個bean來應用多個建議,並可以按bean名稱有選擇地選擇建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.