AspectJ - 接口实现方法的切入点

AspectJ - pointcut for methods of interface's implementation

我有几个 SomeInterface 的实现。问题是在 SomeInterface 的所有实现中方法 executeSomething 的切入点是什么。

public class SomeImplementation implements SomeInterface {

    public String executeSomething(String parameter) {
        // Do something
    }

}

public class AnotherImplementation implements SomeInterface {

    public String executeSomething(String parameter) {
        // Do something different way
    }

}

该方法的切入点可以是方法执行切入点或方法调用切入点。最符合您要求的切入点如下所示:

execution(public String SomeInterface+.executeSomething(String))
call(public String SomeInterface+.executeSomething(String))

对这些切入点类型的一些解释:

  • 这两个切入点中使用的类型模式意味着:所有 public 方法 return StringSomeInterface 或任何子类型中定义其中,被命名为 executeSomething 并接受一个 String 参数 。这是可以为您的案例定义的最具体的类型模式,它将仅匹配 String SomeInterface.executeSomething(String) 方法的实现。
  • 执行类型切入点匹配与执行特定方法体时对应的连接点
  • 调用类型切入点匹配与调用特定方法时对应的连接点(即连接点位于调用方)

执行类型的切入点使用更频繁,但调用类型的切入点在某些情况下也非常有用。

请参阅 The AspectJ Language/Join Points and Pointcuts chapter in the AspectJ Programming Guide 以获取更多参考。