springboot统⼀请求参数打印,包括RequestBody参数背景
通常我们打印请求参数经常是在⾥⾯通过Parameter来做统⼀参数的打印,但是这样只能针对keyValue形式的参数,对于在requestBody⾥⾯post过来的数据,打印不出来。
为此,这⾥我⽤AOP的形式来统⼀做参数打印
代码
import com.alibaba.fastjson.JSONObject;
import com.hamon.util.CommUtil;
import onfig.aspect.annotation.NotLogParam;
slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
springboot aopimport org.flect.CodeSignature;
import org.flect.MethodSignature;
import annotation.Order;
import org.springframework.stereotype.Component;
import org.t.request.RequestContextHolder;
import org.t.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import flect.Method;
import java.util.Arrays;
@Component
@Aspect
@Order(-1)
@Slf4j
public class LogParamAspect {
/**
* 定义⼀个切⼊点.
* 解释下:
*
* ~ 第⼀个 * 代表任意修饰符及任意返回值.
* ~ 第⼆个 * 任意包名
* ~ 第三个 * 代表任意⽅法.
* ~ 第四个 * 定义在controller包或者⼦包
* ~ 第五个 * 任意⽅法
* ~ .. 匹配任意数量的参数.
*/
@Pointcut(value = "execution(public * *.controller..*.*(..))")
public void webLog(){}
private static String[] types = { "java.lang.Integer", "java.lang.Double",
"java.lang.Float", "java.lang.Long", "java.lang.Short",
"java.lang.Byte", "java.lang.Boolean", "java.lang.Char",
"java.lang.String", "int", "double", "long", "short", "byte",
"boolean", "char", "float" };
@Before(value="webLog()")
public void doBefore(JoinPoint joinPoint){
try {
// 接收到请求,记录请求内容
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论