有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

按声明的返回类型划分的java Spring AOP切入点

我有以下课程和方法:

public class Hello {
    public String getGreetingA() {
        return "hello";
    }
    public boolean getGreetingB() {
        return false;
    }
}

以及以下方面:

@Aspect
public class HelloAspect {

    @Pointcut("execution (public String Hello.*(..)")
    public void pointcut() {}

    @Around("pointcut")
    public Object advice(ProceedingJoinPoint pjp) {
        // do something...
        Object result = pjp.proceed;
        // do something...
        return result;
    }
}

目前,这两个Hello类方法都会执行通知。 我希望方面只针对返回String类型的方法。这里的execution切入点似乎没有那么重要(因为通知是Around类型的,执行通知时返回值还不存在)

在Spring AOP中,有没有一个简单的理由来定义一个切入点,指向连接点上声明的返回值属于某种类型的目标

(我知道我可以获取pjp.proceed返回值并检查其instance of,但我不想这样做)


共 (1) 个答案

  1. # 1 楼答案

    我已经复制了你的类,正如预期的那样,aspect only适用于getGreetingA,我无法复制你的案例,因为它们都是目标

    您的示例中存在一些语法错误,下面是正确的代码:

     @Pointcut("execution (public String Hello.*(..))")
     @Around("pointcut()")