@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;
}