我有兩個實現MethodInterceptor的建議類。我希望將這些建議應用於一個切入點表達式,並在我調用目標方法時選擇建議。Spring AOP:選擇建議
我認爲這是不可能的,所以我做了一個目標類的子類,並使用pointcut表示子類。
類的樣子:
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()
方法,也許。當我重寫getZero()
方法時它有效,但我不想重寫它,因爲實際SuperClass
中有太多方法,如果我想調用SuperClass
的方法,這是多餘的。
我可以將建議應用於未實現方法的子類嗎?或者還有其他的選擇性建議的好方法嗎?
'我不確定你的問題是你想匹配所有的子類的方法執行還是隻匹配超類上定義的,但是調用子類的一個實例。「我想要的是後者:( –
你是否在乎你的建議是否適用於超類? – blackdog6621
我不想將這些建議應用於超類,並且我發現瞭如何做到這一點,請參閱我的答案,謝謝你的幫助! –