java - 如何编写正确的切入点来匹配接口(interface)返回对象?

标签 java aspectj aspect pointcut

我不知道这是否可行,但我正在尝试编写一个切入点,它可以匹配任何返回实现特定接口(interface)的对象的方法。

鉴于以下情况:

public class User implements Auditable{
   private int id;

   private String name;

   public String getName(){
      return name;
   }
}

和可审计的接口(interface):

public interface Auditable{
   public String getName();
}

还有一些随机类:

public class RandomClass{
    public User getNewUser(){
       User u = new User();
       return u;
    }
}

我如何编写一个“AfterReturning”切入点来捕获任何实现 Auditable 的名为 getNew* 的方法?

以下作品:

pointcut auditablePointcut(): call(public * *.getNew*(..))

然而,这将匹配任何返回类型。以下不起作用:

pointcut auditablePointcut(): call(public Auditable *.getNew*(..))

我想我可以使用 if() 来编写它,但这似乎有点笨拙(我还没有尝试过)。还是有更优雅的方式?

最佳答案

after () returning (Audible au) : call(public * *.getNew*(..))

关于java - 如何编写正确的切入点来匹配接口(interface)返回对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20293117/

相关文章:

java - 获取Java中的所有异常并远程发送

java - 即使使用关键字 "after",AOP 方面也会在给定方法之前执行?

java - 如何从 web.xml 检索权限

java - 如何从 Executors 中正确捕获 RuntimeExceptions?

java - 如何保证应用数据的完整性?

java - 为什么这个简单的 Spring Boot 应用程序会给出空指针异常?

java - AspectJ - 方法参数的更改值

java - 如何模拟一个方面

spring - 建议 javax.persistence.EntityManager 与 AspectJ 不起作用

java - 在建议被执行两次之前...相同的连接点为相同的方法列出了两次,因此它被调用了两次