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


  • 相关阅读:
    省选前模拟
    $SA$后缀数组
    一键运行
    多项式$fft$,$ntt$,$fwt$初步
    插头$DP$初步
    网络流初步
    欧拉路相关
    模板—Hash_map
    HZOJ Function
    HZOJ Tree
  • 原文地址:https://www.cnblogs.com/guagua-join-1/p/10368533.html
Copyright © 2011-2022 走看看