美文网首页
SpringBoot打印请求参数与响应参数

SpringBoot打印请求参数与响应参数

作者: 程序员小杰 | 来源:发表于2020-11-22 14:12 被阅读0次

前言

使用Aop的环绕通知实现

加入依赖

<!--引入lombok依赖-->
     <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

<!--引入AOP依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

编码

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
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.aspectj.lang.reflect.MethodSignature;
import org.springframework.context.annotation.Configuration;

@Aspect
@Configuration
@Slf4j
public class WebLogAspect {

    ObjectMapper objectMapper = new ObjectMapper();

    @Pointcut("execution(* com.gongj.mall.product.scenario.controller..*.*(..))")
    public void webLog(){}

    @Around(value = "webLog()")
    public Object webLogAround(ProceedingJoinPoint joinPoint) throws Throwable {

        String className = joinPoint.getTarget().getClass().getName();
        MethodSignature signature = (MethodSignature)joinPoint.getSignature();
        String methodName = new StringBuffer(className.replaceFirst("com.gongj.mall.", ""))
                .append(".")
                .append(signature.getMethod().getName())
                .append("():").toString();
        log.info("==========> {} Request Params:{}",methodName, objectMapper.writeValueAsString(joinPoint.getArgs()));
        Object proceed = joinPoint.proceed();
        log.info("==========> {} Return Message:{}",methodName,objectMapper.writeValueAsString(proceed));
        return proceed;
    }
}

其中几个方法进行介绍:

  • Object getTarget:获取被代理的对象
  • Signature getSignature:返回目标方法的签名对象
  • Object[] getArgs:返回目标方法的参数
  • Object proceed:执行目标方法

相关文章

网友评论

      本文标题:SpringBoot打印请求参数与响应参数

      本文链接:https://www.haomeiwen.com/subject/gtyuiktx.html