SpringBoot使用AOP获取请求参数 | springboot是怎么使用aop的

SpringBoot使用AOP获取请求参数 | springboot是怎么使用aop的
package com.*.aop;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.Signature;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.ArrayList;import java.util.List;/** * @Description //请求参数aop **/@Component@Aspect@Slf4jpublic class RequestParameterAop {    /**     * @Description: 定义需要拦截的切面     * @Return: void     * @Author: yangli     * @Date: 2019/9/06-10:17     **/    @Pointcut("execution(* com.*.controller.*Controller.*(..))")    public void methodArgs() {    }    @Around("methodArgs()")    public Object invoke(ProceedingJoinPoint joinPoint) throws Throwable {        Object result = null;        // 获取请求参数进行打印        Signature signature = joinPoint.getSignature();        JSONObject signatureJson = JSON.parseObject(JSON.toJSONString(signature));        // 方法        String methodName = signatureJson.getString("name");        // 类名        String serviceName = signatureJson.getString("declaringType");        // 参数名数组        JSONArray parameterNames = signatureJson.getJSONArray("parameterNames");        // 构造参数组集合        List<Object> argList = new ArrayList<>();        for (Object arg : joinPoint.getArgs()) {            // request/response无法使用toJSON            if (arg instanceof HttpServletRequest) {                argList.add("request");            } else if (arg instanceof HttpServletResponse) {                argList.add("response");            } else {                argList.add(JSON.toJSON(arg));            }        }        try {            log.error("{} -> 方法({}) -> 参数:{} - {}", serviceName, methodName, JSON.toJSON(parameterNames), JSON.toJSON(argList));        } catch (Exception e) {            log.error("参数获取失败: {}", e.getMessage());        }        result = joinPoint.proceed();        return result;    }}

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部