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


  • 相关阅读:
    Android权限大全(链接地址整理)
    Android6.0运行时权限(基于RxPermission开源库)
    Android6.0机型上调用系统相机拍照返回的resultCode值始终等于0的问题
    使用AccessibilityService模拟点击事件失败的分析
    Android混淆打包配置总结
    okhttputils开源库的混淆配置(Eclipse)
    Android布局中的空格以及占一个汉字宽度的空格,实现不同汉字字数对齐
    java开发者大会:总结
    JAVA开发者大会:拍拍贷MQ系统原理与应用
    消息总线真的能保证幂等?
  • 原文地址:https://www.cnblogs.com/guagua-join-1/p/10368533.html
Copyright © 2011-2022 走看看