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


  • 相关阅读:
    leetcode刷题-131~
    leetcode刷题-106~114/116~122/125/127/129~130
    leetcode刷题-100~105
    Intel-Pin的windows安装
    九、appium自动化框架综合实践
    QQ传文件用例设计
    mysql常用语句
    谐云试用的日子
    码农开发资料集
    MyBatis中一个SQL语句的执行过程解析
  • 原文地址:https://www.cnblogs.com/guagua-join-1/p/10368533.html
Copyright © 2011-2022 走看看