spring mvc 通过拦截器记录请求数据和响应数据
spring mvc 能过拦截器记录请求数据记录有很多种方式,主要有以下三种:
1:过滤器
2:HandlerInterceptor拦截器
3:Aspect接口控制器
但是就我个人所知要记录返回的数据,只能通过Aspect处理,以下是实现此需要的代码
package com.qmtt.config; import java.util.Arrays; 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.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Configuration; import com.qmtt.tools.JsonUtils; /*** * * @author wujf 拦截所有控制器的返回,记录响应报文 */ @Aspect @Configuration public class QmttAspect { private static final Logger log = LoggerFactory.getLogger(QmttAspect.class); public QmttAspect() { } // 不能拦截@RequestMapping,这样会导致swagger无法使用 // @Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping)") @Pointcut("execution(public * com.qmtt.controller.*.*(..))") public void pointCutMethod() { } // 声明环绕通知 @Around("pointCutMethod()") public Object doAround(ProceedingJoinPoint pjp) throws Throwable { String controller = pjp.getTarget().getClass().getSimpleName(); String method = pjp.getSignature().getName(); String args = Arrays.toString(pjp.getArgs()); log.info("<{}.{}>,请求参数:{}", controller, method, args); Object ret = pjp.proceed(); log.info("响应数据:{}", JsonUtils.toJsonString(ret)); return ret; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人