簡體   English   中英

如何定義一個切入點來挑選指定方法調用的所有方法?

[英]How to define a Pointcut to pick out all methods invoked by the specified method?

有沒有辦法在 AspectJ 中定義一個切入點來挑選出由指定方法直接執行的每個方法?

例如,如果有一個parentMethod()classA ,看起來像:

public void parentMethod() {
    classB.methodX();
    classC.methodY();
}

我想定義一個切入點,該切入點僅使用有關parentMethod的信息來挑選出何時執行其調用的方法methodX()methodY() 有沒有辦法使用 AspectJ 切入點來實現這一點?

我認為我們不是在談論繼承,所以你不應該稱它為“父方法”。 你只是指一個調用其他方法的方法,不是嗎? 無論如何,關於你的問題:

與原生 AspectJ 的cflow()cflowbelow()切入點相比,使用 Spring AOP 表達控制流切入點的方法有限。 在您的情況下,如果您想堅持使用基於代理的 Spring AOP, ControlFlowPointcut可能就足夠了,因為您不需要任何方法名稱模式,但似乎有一個固定的方法名稱作為您的目標。 有關更多信息,請參閱:

  • 此答案的“更新 2”部分提供了指向有關ControlFlowPointcut資源的基本指針。
  • 這個答案,如果您想將方法模式與自定義MultiMethodControlFlowPointcut匹配(目前 Spring 開箱即用仍不支持)。
  • Spring 手冊章節“在 Spring 應用程序中使用 AspectJ”解釋了如何配置 Spring 以通過加載時編織 (LTW) 使用原生 AspectJ。
  • 如果您決定采用本機 AspectJ LTW 方式,AspectJ 手冊中關於基於控制流的切入點的部分簡要解釋了cflowcflowbelow

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM