使用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();
我现在有一个需求,就是在使用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();