@Aspect @Configuration public class RequestAspect { public RequestAspect() { } @Pointcut("execution(* *..*Controller.*(..))") public void controladorAspect() { } @Before("controllerAspect()" ) public void printRequestParam(JoinPoint joinPoint) { Solicitud HttpServletRequest = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); String nombre de clase = joinPoint.getTarget().getClass().getName(); Método de cadena = joinPoint.getSignature().getName(); if (!this.haveServletRequest(joinPoint.getArgs())) { String métodoParam = JsonUtils.toJson(this.initparam(joinPoint)); RequestLog.info("请求入参: " + métodoParam + " " + className.substring(className.lastIndexOf(".")) + "." + método); } } @AfterReturning( regresando = "ret", pointcut = "controllerAspect()" ) public void printResponseParam(Object ret) { if (ret instancia de cadena) { if (ret.toString().indexOf("recordsTotal") <= 0) { RequestLog.info("返回参数: " + ret.toString()); } } else { RequestLog.info("返回参数: " + JsonUtils. toJson(ret)); } } Mapa privado<Cadena, Objeto> initparam(JoinPoint joinPoint) { Firma firma = joinPoint.getSignature(); MétodoFirma métodoFirma = (FirmaMétodo)firma; String[] claves = métodoSignature.getParameterNames(); Objeto[] args = joinPoint.getArgs(); Map<String, Object> params = new LinkedHashMap(); for(int i = 0; i < claves.longitud; ++i) { if (args[i] instancia de InputStreamSource) { params.put(claves[i], "文件类型" + args[i].getClass() .getName()); } else { params.put(claves[i], args[i]); } } parámetros de retorno; } haveServletRequest booleano privado (Objeto [] argumentos) { if (args.length <= 0) { return false; } else { for(int i = 0; i < args.length; ++i) { if (i >= 2) { return false; } if (args[i] instancia de ServletRequest) { return true; } } devuelve falso; } } }
Plan de diseño para imprimir cada solicitud y los parámetros correspondientes - interceptor
Supongo que te gusta
Origin blog.csdn.net/yz18931904/article/details/130748970
Recomendado
Clasificación