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

时间:2017-12-25 09:01:38

标签: java aspectj

我有几个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
    }

}

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

请参阅The AspectJ Language/Join Points and Pointcuts中的AspectJ Programming Guide章节以获取进一步的参考。