内置功能

请求数据记录

Spring Boot 通过AbstractRequestLoggingFilter记录请求详细信息,常用实现类是CommonsRequestLoggingFilter 。
配置logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG开启详细日志记录。

请求 / 响应包装器

  • 概念:用于增强HttpServletRequestHttpServletResponse对象功能,可拦截和修改请求、响应数据。如ContentCachingRequestWrapper缓存请求输入流,ContentCachingResponseWrapper缓存响应输出流。
  • 使用场景:包括请求日志记录、修改请求数据、修改响应内容、性能测试等。
  • 具体用法:通过继承OncePerRequestFilter,在doFilterInternal方法中使用包装器处理数据。

单次过滤器 OncePerRequestFilter

  • 特点:确保在一次请求生命周期内,无论请求如何转发或包含,过滤器逻辑只执行一次;内置对请求和响应包装器的支持;简化代码,易于扩展。
  • 使用场景:请求日志记录、请求数据修改、响应数据修改、安全控制、请求和响应包装、性能监控、异常处理等。

AOP 三件套

  • AopContext:用于获取当前 AOP 代理对象和目标对象信息。getTargetObject()获取目标对象,currentProxy()获取代理对象,可解决同一类中注解失效问题。
  • AopUtils:提供处理 AOP 相关操作的静态方法,如getTargetObject()获取目标对象,isJdkDynamicProxy(Object obj)判断是否是 JDK 动态代理,isCglibProxy(Object obj)判断是否是 CGLIB 代理。
  • ReflectionUtils:提供反射操作便捷方法,如makeAccessible(Field field)使私有字段可访问,getField(Field field, Object target)获取对象字段值,invokeMethod(Method method, Object target, Object... args)调用对象方法。
Loading...
文章列表
王小扬博客
云原生
Git
Elasticsearch
Apollo
产品
Think
生活技巧
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP
AI