内置功能
请求数据记录
Spring Boot 通过
AbstractRequestLoggingFilter
记录请求详细信息,常用实现类是CommonsRequestLoggingFilter
。配置
logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG
开启详细日志记录。请求 / 响应包装器
- 概念:用于增强
HttpServletRequest
和HttpServletResponse
对象功能,可拦截和修改请求、响应数据。如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...