zoukankan      html  css  js  c++  java
  • Springboot 请求参数通知RequestBodyAdvice和响应通知ResponseBodyAdvice做日志的打印

    1,请求参数的打印

    @ControllerAdvice(basePackages = "控制器的命名空间")
    public class LogRequestAdvice implements RequestBodyAdvice {
    Logger logger = LoggerFactory.getLogger(getClass());

    @Override
    public boolean supports(MethodParameter methodParameter, Type type, Class<? extends HttpMessageConverter<?>> aClass) {
    //判断是否有此注解
    boolean b = methodParameter.getParameterAnnotation(RequestBody.class) != null;
    //只有为true时才会执行afterBodyRead
    return b;
    }

    @Override
    public HttpInputMessage beforeBodyRead(HttpInputMessage httpInputMessage, MethodParameter methodParameter, Type type, Class<? extends HttpMessageConverter<?>> aClass) throws IOException {
    InputStream body = httpInputMessage.getBody();
    return new MappingJacksonInputMessage(httpInputMessage.getBody(), httpInputMessage.getHeaders());
    }

    @Override
    public Object afterBodyRead(Object o, HttpInputMessage httpInputMessage, MethodParameter methodParameter, Type type, Class<? extends HttpMessageConverter<?>> aClass) {
    //仅仅打印请求参数
    String s = JSON.toJSONString(o);
    /**
    * 去除注 回车 水平制表符 空格 s 换行
    */
    String s2 = StringUtils.replaceBlankByLow(s);
    logger.info("请求参数为:{}", s2);
    return o;
    }

    @Override
    public Object handleEmptyBody(Object o, HttpInputMessage httpInputMessage, MethodParameter methodParameter, Type type, Class<? extends HttpMessageConverter<?>> aClass) {
    return null;
    }
    2,请求参数的打印
    @ControllerAdvice(basePackages = "控制器的命名空间")
    public class LogResponseAdvice implements ResponseBodyAdvice<Object> {

    Logger logger = LoggerFactory.getLogger(LogResponseAdvice.class);

    @Override
    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
    return true;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
    /**
    * 仅仅打印返回的参数参数
    */
    String s = JSON.toJSONString(body);
    logger.info("返回值为:{}", s);
    return body;
    }


  • 相关阅读:
    7月15日考试 题解(链表+状压DP+思维题)
    暑假集训日记
    C# .NET 使用 NPOI 生成 .xlsx 格式 Excel
    JavaSE 基础 第42节 局部内部类
    JavaSE 基础 第41节 匿名内部类
    JavaSE 基础 第40节 内部类概述
    JavaSE 基础 第39节 接口的应用
    JavaSE 基础 第38节 接口的实现
    JavaSE 基础 第37节 接口概述
    JavaSE 基础 第36节 抽象类概述与使用
  • 原文地址:https://www.cnblogs.com/guagua-join-1/p/10368533.html
Copyright © 2011-2022 走看看