【问题标题】:Spring AOP pointcut by declared return type声明返回类型的 Spring AOP 切入点
【发布时间】:2017-05-03 08:02:22
【问题描述】:

我有以下类和方法:

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,但我不想这样做)

【问题讨论】:

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

标签: java aop spring-aop


【解决方案1】:

我已经复制了您的课程,并且正如预期的那样,该方面仅适用于 getGreetingA,我无法重现您的情况,因为它们都是针对目标的

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多