本文介紹了如何定義PointCut來挑選由指定方法調用的所有方法?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
有沒有辦法在AspectJ中定義一個切入點來挑選由指定方法直接執行的每個方法?
例如,如果classA中有parentMethod(),則如下所示:
public void parentMethod() {
classB.methodX();
classC.methodY();
}
我想定義一個切入點,只要執行它調用的方法methodX()和methodY(),就只使用有關parentMethod的信息來挑選。有沒有辦法使用AspectJ切入點來實現這一點?
推薦答案
我認為我們不是在談論繼承,因此您不應該將其稱為父方法。您只是指一個調用其他方法的方法,不是嗎?無論如何,關于你的問題:
與原生AspectJ的cflow()和cflowbelow()切入點相比,使用Spring AOP表達控制流切點的方法有限。在您的例子中,如果您想堅持使用基于代理的Spring AOP,ControlFlowPointcut就足夠了,因為您不需要任何方法名稱模式,但似乎有一個固定的方法名稱作為您的目標。有關更多信息,請參閱:
第2節,共this answer更新2節,了解有關ControlFlowPointcut的資源的基本指針。
This answer,如果您希望將方法模式與自定義MultiMethodControlFlowPointcut(目前仍不受Spring開箱即用支持)匹配。
Spring手冊章節"Using AspectJ with Spring Applications"介紹如何通過加載時編織(LTW)將Spring配置為使用本機AspectJ。
如果您決定使用原生的AspectJ LTW方式,AspectJ手冊中關于control-flow-based pointcuts的章節將簡要介紹cflow和cflowbelow。
這篇關于如何定義PointCut來挑選由指定方法調用的所有方法?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,






