码迷,mamicode.com
首页 > 编程语言 > 详细

springBoot使用aop添加处理rest请求 打印请求时间 和请求参数

时间:2019-12-27 11:20:53      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:ram   fastjson   new   out   private   spec   mil   打印   div   

贴上aop配置

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;

@Aspect
@Component
public class RestAop {

    /**
     * // 控制是否开启日志
     */
    public static Boolean onOff = false;

    private static Log logger = LogFactory.getLog(RestAop.class);

    @Pointcut("execution(public * com.mybatis.*.web..*.*(..))")
    public void pointCutRestDef() {
    }

    @Around("pointCutRestDef()")
    public Object processRst(ProceedingJoinPoint point) throws Throwable {
        Object returnValue = null;
        final List<Object> params = new ArrayList<>();
        ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = sra.getRequest();
        Object[] args = point.getArgs();
        for (int i = 0; i < args.length; i++) {
            Object object = args[i];
            if (object instanceof HttpServletResponse) {
                continue;
            }
            if (object instanceof HttpServletRequest) {
                continue;
            }
            params.add(object);
        }
        logger.info(
                "rest method: " + point.getSignature().getDeclaringTypeName() + "." + point.getSignature().getName());
        String cloneParams = JSONObject.toJSONString(params);
        logger.info("rest param: " + cloneParams);
        Long startTime = System.currentTimeMillis();
        try {
            returnValue = point.proceed(point.getArgs());
        } catch (Exception e) {
            // 请求异常处理
            throw e;
        }
        Long endTime = System.currentTimeMillis();
        logger.info("rest  " + request.getRequestURI() + "---used time---" + (endTime - startTime));
        Boolean boolean1 = true;
        if (returnValue != null && !returnValue.equals(boolean1)) {
            System.out.println(JSONObject.toJSONString(returnValue));

        }
        return returnValue;
    }

}

springBoot使用aop添加处理rest请求 打印请求时间 和请求参数

标签:ram   fastjson   new   out   private   spec   mil   打印   div   

原文地址:https://www.cnblogs.com/guanxiaohe/p/12106240.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!