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
String
在 SomeInterface
或任何子类型中定义其中,被命名为 executeSomething
并接受一个 String
参数 。这是可以为您的案例定义的最具体的类型模式,它将仅匹配 String SomeInterface.executeSomething(String)
方法的实现。
- 执行类型切入点匹配与执行特定方法体时对应的连接点
- 调用类型切入点匹配与调用特定方法时对应的连接点(即连接点位于调用方)
执行类型的切入点使用更频繁,但调用类型的切入点在某些情况下也非常有用。
请参阅 The AspectJ Language/Join Points and Pointcuts chapter in the AspectJ Programming Guide 以获取更多参考。
我有几个 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
String
在SomeInterface
或任何子类型中定义其中,被命名为executeSomething
并接受一个String
参数 。这是可以为您的案例定义的最具体的类型模式,它将仅匹配String SomeInterface.executeSomething(String)
方法的实现。 - 执行类型切入点匹配与执行特定方法体时对应的连接点
- 调用类型切入点匹配与调用特定方法时对应的连接点(即连接点位于调用方)
执行类型的切入点使用更频繁,但调用类型的切入点在某些情况下也非常有用。
请参阅 The AspectJ Language/Join Points and Pointcuts chapter in the AspectJ Programming Guide 以获取更多参考。