使用spring aop:around时,如何获取切入点方法的return类型?

When using spring aop:around, how can I get return type of the pointcut method?

我现在有一个需求,就是在使用mybatis的时候(尤其是那些batch execute sql),先检查参数,如果参数为null或者为空,那么就return,不要如果 return 类型是 List,则不继续,例如

List<User> getByIds(List<Long> idList)

return空ArrayList,如果return类型为void:

 void batchInsert(List<User>)

return 空。 目的是避免这种情况,例如。

select * from user where id in ()
insert into user(name,email) values ()

但是从 joinPoint 我无法得到 return 类型,只能得到 args。

Object[] args = joinPoint.getArgs();
if(args!=null&&args.length=1){
    if(args[0] instanceof List){
        if(((List) obj).isEmpty()){
                if(returnType.equals("java.util.List"))
                    return new ArrayList();
                else if(returnType.equals("void"))
                    return null;    
    }
}
return joinPoint.proceed();

那么我怎样才能 return 输入 aop:around?

要从 ProceedingJoinPoint 获取方法 return type/class,您可以这样做:

Signature signature =  proceedingJoinPoint.getSignature();
Class returnType = ((MethodSignature) signature).getReturnType();