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

Java 按声明的返回类型划分的Spring AOP切入点,java,aop,spring-aop,Java,Aop,Spring Aop,我有以下类和方法: public class Hello { public String getGreetingA() { return "hello"; } public boolean getGreetingB() { return false; } } 以及以下方面: @Aspect public class HelloAspect { @Pointcut("execution (public String Hel

我有以下类和方法:

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
type的方法。似乎
执行
切入点在这里并不相关(因为通知是
环绕
类型的,并且在执行通知时返回值还不存在)

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


(我知道我可以获得
pjp。继续
返回值并检查它的
实例
,但我不想这样做)

我已经复制了你的类,正如预期的那样,方面只适用于getGreetingA,我无法重现你的情况,即它们都是目标

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

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

现在,用于
@Pointcut
的模式应该只适用于方法
getGreetingA
,因为它将
Hello
中的所有公共方法与返回类型
String
相匹配。