Spring aop切入点表达式来访问方法返回类型

Sea*_*oyd 8 java aop spring pointcuts spring-aop

我有一个带有许多方法的服务接口,所有这些方法都接受一个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){ ... }
Run Code Online (Sandbox Code Playgroud)

Chr*_*rau 6

Javadoc JoinPoint提到了一个getSignature()方法,它的返回类型Signature有一个MethodSignature你可以尝试转换的子接口,它有一个方法getReturnType(),可能就是你要找的东西.