Plan de diseño para imprimir cada solicitud y los parámetros correspondientes - interceptor

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

Supongo que te gusta

Origin blog.csdn.net/yz18931904/article/details/130748970
Recomendado
Clasificación