Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当使用SpringAOP:around时,如何获得切入点方法的返回类型?_Java_Spring_Spring Aop - Fatal编程技术网

Java 当使用SpringAOP:around时,如何获得切入点方法的返回类型?

Java 当使用SpringAOP:around时,如何获得切入点方法的返回类型?,java,spring,spring-aop,Java,Spring,Spring Aop,我现在有一个要求,那就是当使用mybatis(特别是那些批处理执行sql)时,首先检查参数,如果参数为null或空,那么只返回,不继续,如果返回类型为List,例如 List<User> getByIds(List<Long> idList) 但是从joinPoint我不能得到返回类型,只能得到args Object[] args = joinPoint.getArgs(); if(args!=null&&args.length=1){ if(a

我现在有一个要求,那就是当使用mybatis(特别是那些批处理执行sql)时,首先检查参数,如果参数为null或空,那么只返回,不继续,如果返回类型为List,例如

List<User> getByIds(List<Long> idList)
但是从joinPoint我不能得到返回类型,只能得到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();

那么如何在aop:around中获取返回类型呢?

要从
ProceedingJoinPoint
获取方法返回类型/类,可以执行以下操作:

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

谢谢它起作用了!但我决定用mybatis拦截器来做这个,一百万美元
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();
Signature signature =  proceedingJoinPoint.getSignature();
Class returnType = ((MethodSignature) signature).getReturnType();