8

我有一个包含许多方法的服务接口,所有这些方法都接受一个 Request 对象并返回一个 Response 对象。所有请求对象都有一个共同的祖先,所有响应对象都有一个不同的共同祖先(它有一个成功标志和一个消息字段)。

现在我想要一个检查权限等的周围方面,执行服务调用并在任何失败时返回一个带有失败代码的 Response 对象。问题是:我需要知道要创建什么类型的 Response 对象。是否有一个切入点表达式可以让我访问返回类型?大概是这样的吧?

@Around(value = "execution(public *"
    + " com.mycompany.MyService+.*(..))"
    + " && args(request)"
    + " && returning( returnType)" // something like this would be nice

, argNames = "request,returnType")
public Object handleServiceCall(final ProceedingJoinPoint pjp,
    final Request request,
    final Class<? extends Response> returnType){ ... }
4

2 回答 2

6

Javadoc forJoinPoint提到了一个getSignature()方法,它的返回类型有一个你可以尝试转换Signature的子接口,它有一个方法,这可能是你正在寻找的。MethodSignaturegetReturnType()

于 2010-06-23T09:57:18.863 回答
0

您可以在周围的建议方法中进行检查(在您的情况下为handleServiceCall())

Object actuals = pjp.proceed();
if(actuals instanceof MyResponse){
//TO:DO: Your code here
}
于 2010-06-23T09:15:01.327 回答