Spring声明返回类型的AOP切入点

时间:2017-05-03 08:02:23

标签: 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 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中有一个简单的原因来定义一个切入点以在Joinpoints上定位它们声明的返回值是否为某种类型?

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

1 个答案:

答案 0 :(得分:0)

我已经复制了你的课程,正如预期的那样,这个方面只适用于getGreetingA,我不能重现你们两个都被定位的情况

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

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