我有一个包含许多方法的服务接口,所有这些方法都接受一个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){ ... }
答案 0 :(得分:6)
JoinPoint
的Javadoc提到了一个getSignature()
方法,其返回类型Signature
有一个子接口MethodSignature
,您可以尝试转换为该方法{{1}这可能就是你要找的东西。
答案 1 :(得分:0)
您可以在around advice方法(在您的情况下为handleServiceCall())中进行检查
Object actuals = pjp.proceed();
if(actuals instanceof MyResponse){
//TO:DO: Your code here
}