java切面获取到方法里类的值_spring aop 切面编程中获取具体方法的方法

@Around(value = "GlobalControllerAspect.controllerPointcut()")public Object around(ProceedingJoinPoint proceedingJoinPoint) throwsThrowable {

Object result= null;try{long statrTime=System.currentTimeMillis();

result=proceedingJoinPoint.proceed();long endTime=System.currentTimeMillis();

String declaringTypeName=proceedingJoinPoint.getSignature().getDeclaringTypeName();

String methodName=proceedingJoinPoint.getSignature().getName();

StringBuilder spendTimeLog=new StringBuilder("方法名称:").append(declaringTypeName).append(".").append(methodName).append("() 耗时为:").append(endTime-statrTime).append("ms.");

logger.info(spendTimeLog.toString());

}catch(Exception e) {

logger.error("环绕通知捕获异常信息:",e);

ResponseModel responseModel=newResponseModel();if (e instanceofRuntimeException) {

responseModel.setStatus(ResponseModel.STATUS_FAIL);

responseModel.setMsgType(ResponseModel.MSGTYPE_INFO);

responseModel.setMsgContent(e.getMessage());

}else{

responseModel.setMsgType(ResponseModel.MSGTYPE_WARINNING);

responseModel.setStatus(ResponseModel.STATUS_ERROR);

responseModel.setMsgContent(e.getMessage());

}

Signature sig=proceedingJoinPoint.getSignature();

MethodSignature msig= null;if (!(sig instanceofMethodSignature)) {throw new IllegalArgumentException("该注解只能用于方法");

}

msig=(MethodSignature) sig;

Object target=proceedingJoinPoint.getTarget();

Method currentMethod=target.getClass().getMethod(msig.getName(), msig.getParameterTypes());

Class> returnType =currentMethod.getReturnType();if(returnType.isAssignableFrom(responseModel.getClass())||returnType==ResponseModel.class){returnresponseModel;

}else if(returnType==JSONObject.class){returnresponseModel.toJSON();

}

}returnresult;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值