【发布时间】: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