zoukankan      html  css  js  c++  java
  • spring mvc 通过拦截器记录请求数据和响应数据

    spring mvc 能过拦截器记录请求数据记录有很多种方式,主要有以下三种:

    1:过滤器

    2:HandlerInterceptor拦截器

    3:Aspect接口控制器

    但是就我个人所知要记录返回的数据,只能通过Aspect处理,以下是实现此需要的代码

    package com.qmtt.config;
    
    import java.util.Arrays;
    
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.Around;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Pointcut;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.annotation.Configuration;
    
    import com.qmtt.tools.JsonUtils;
    
    /***
     * 
     * @author wujf 拦截所有控制器的返回,记录响应报文
     */
    @Aspect
    @Configuration
    public class QmttAspect {
        private static final Logger log = LoggerFactory.getLogger(QmttAspect.class);
    
        public QmttAspect() {
        }
    
        // 不能拦截@RequestMapping,这样会导致swagger无法使用
        // @Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)")
        @Pointcut("execution(public * com.qmtt.controller.*.*(..))")
        public void pointCutMethod() {
        }
    
        // 声明环绕通知
        @Around("pointCutMethod()")
        public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
            String controller = pjp.getTarget().getClass().getSimpleName();
            String method = pjp.getSignature().getName();
            String args = Arrays.toString(pjp.getArgs());
            log.info("<{}.{}>,请求参数:{}", controller, method, args);
            Object ret = pjp.proceed();
            log.info("响应数据:{}", JsonUtils.toJsonString(ret));
            return ret;
        }
    }

    有追求,才有动力!

    向每一个软件工程师致敬!

    by wujf

    mail:921252375@qq.com

  • 相关阅读:
    合并指定表格指定列的相同文本的相邻单元格
    [转载]>/dev/null 2>&1 含义
    有关cron
    jQuery版本对checkbox影响
    c# 如何获取项目的根目录
    Javascript 字符串组装用函数 format
    sql server 删除数据库
    说说接口封装
    有开放的接口!!!!
    支付宝支付功能的集成
  • 原文地址:https://www.cnblogs.com/wujf/p/8337832.html
Copyright © 2011-2022 走看看