最近试了下拦截controller方法查看请求参数,方式如下:

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
@Slf4j
public class RequestParameterAop { /**
* @Description: 定义需要拦截的切面
* @Return: void
**/
@Pointcut("execution(* com.*.controller.*Controller.*(..))")
public void methodArgs() { } @Around("methodArgs()")
public Object invoke(ProceedingJoinPoint joinPoint) throws Throwable {
Object result = null; Signature signature = joinPoint.getSignature();
// 方法名
String methodName = signature.getName();
// 类名
String serviceName = signature.getDeclaringTypeName(); // 参数名数组
String[] parameterNames = ((MethodSignature) signature).getParameterNames();
// 构造参数组集合
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.info("{} -> 方法({}) -> 参数:{} - {}", serviceName, methodName, JSON.toJSON(parameterNames), JSON.toJSON(argList));
} catch (Exception e) {
log.error("参数获取失败: {}", e.getMessage());
}
result = joinPoint.proceed(); return result;
}
}

最新文章

  1. PostgresSQL的安装与基本命令使用
  2. 【模块化编程】理解requireJS-实现一个简单的模块加载器
  3. ORA-00600: internal error code, arguments: [kcratr1_lastbwr], [], [], [], [], [], [], []
  4. CSS Sprites+CSS3 Icon Font
  5. HTML 的 meta 标签
  6. JS 控制CSS样式表
  7. java 内存观察
  8. 禅道 Rest API 开发
  9. PHP 依赖注入,从此不再考虑加载顺序
  10. C# 将文件转化成byte[]数组
  11. java 接收 char字符型
  12. Android Dependencies小差号引起的问题
  13. MySql学习笔记(转载)
  14. control
  15. python 密码学编程
  16. python安装media报错
  17. Xlua 不同平台链接库编译
  18. mysql中find_in_set结合GROUP_CONCAT使用
  19. Scala入门1(单例对象和伴生类)
  20. Sizzle源码分析:二 词法分析

热门文章

  1. 浅析Json底层
  2. BZOJ4383 [POI2015]Pustynia[线段树优化建边+拓扑排序+差分约束]
  3. Python序列构成的数组
  4. Crystal Report中文顯示亂碼
  5. Windows操作系统中的I/O(读/写 输入/输出)
  6. deepin grub2017年11月13日折腾记录
  7. Django-内置的auth模块
  8. Django-CRM后台管理系统
  9. python3版 爬虫了解
  10. Java线程之创建线程