IIWAB Spring Boot 中几个非常实用的内置功能 - IIWAB

Spring Boot 中几个非常实用的内置功能

IIWAB 5月前 ⋅ 241 阅读

包括请求数据记录的实现方式;请求/响应包装器的概念、使用场景及具体用法;单次过滤器 OncePerRequestFilter 的特点和使用场景;AOP 三件套(AopContext、AopUtils、ReflectionUtils)的作用

以下是关于如何运用这些功能的分类说明:

请求数据记录

  1. 首先创建一个@Configuration类,如RequestLoggingConfig
  2. 在类中创建CommonsRequestLoggingFilter的实例,并设置相关属性,如setIncludeQueryString(true)setIncludePayload(true)setIncludeHeaders(true)setIncludeClientInfo(true)setAfterMessagePrefix("REQUEST DATA-")
  3. 配置日志级别DEBUG,即设置logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG

请求/响应包装器

  1. 对于请求包装器,创建一个继承自OncePerRequestFilter的类,如RequestWrapperFilter
    • doFilterInternal方法中创建ContentCachingRequestWrapper对象,并处理请求数据,如获取请求体的字节数组。
  2. 对于响应包装器,创建一个继承自OncePerRequestFilter的类,如ResponseWrapperFilter
    • doFilterInternal方法中创建ContentCachingResponseWrapper对象,处理响应数据,如获取响应体的字节数组,添加响应头,最后调用copyBodyToResponse方法将响应数据发送到客户端。

单次过滤器 OncePerRequestFilter: 通过继承OncePerRequestFilter,重写doFilterInternal方法来实现自己的过滤逻辑。

AOP 三件套

  1. AopContext:在需要获取当前代理对象或目标对象时使用,如在同一个类中调用代理类的方法时。
  2. AopUtils:用于判断代理类型、获取目标对象等操作。
  3. ReflectionUtils:用于进行反射操作,如使私有字段可访问、获取字段值、调用方法等。

全部评论: 0

    我有话说: