config目录配置类说明.md 3.9 KB

config 目录配置类说明

src/main/java/work/baiyun/chronicdiseaseapp/config 目录下包含了项目中的各种配置类,这些类负责配置应用程序的各种组件和服务。

AuthInterceptor.java

用途

AuthInterceptor 是一个身份验证拦截器,负责从请求中提取 token 并进行验证,确保只有经过身份验证的用户才能访问受保护的资源。

实现细节

  • 实现了 Spring 的 HandlerInterceptor 接口
  • 支持多种 token 传递方式:
    • 标准的 Authorization header(Bearer token)
    • X-Token header
    • token header
    • 请求体中的 token 参数
  • 优先使用标准的 Authorization header 方式
  • 对于 OPTIONS 预检请求会自动放行
  • 验证通过后会将用户 ID 和权限组信息放入 request attribute 中供后续使用
  • 使用 TokenService 来验证 token 的有效性

AvatarProperties.java

用途

AvatarProperties 是用于配置用户头像相关属性的配置类,包括存储路径、文件大小限制和允许的文件类型。

实现细节

  • 使用 @ConfigurationProperties 注解,前缀为 "avatar"
  • 配置项包括:
    • rootPath: 头像存储的根路径(绝对路径)
    • maxSize: 最大文件大小,默认为 2MB
    • allowedTypes: 允许的文件类型,默认为 jpg,png,jpeg,webp
  • 使用 Spring Boot 的类型安全配置属性机制

CorsConfig.java

用途

CorsConfig 是跨域资源共享(CORS)配置类,用于配置允许跨域请求的相关设置。

实现细节

  • 实现了 WebMvcConfigurer 接口
  • 允许来自 http://localhost:3000 的跨域请求
  • 允许 GET、POST、PUT、DELETE、OPTIONS 方法
  • 允许所有头部信息
  • 暴露 X-Custom-Header、X-Token、Authorization 头部给前端
  • 预检请求有效期为 3600 秒
  • 允许发送 Cookie 凭据

Knife4jConfig.java

用途

Knife4jConfig 是 API 文档配置类,用于配置 Swagger/OpenAPI 文档的相关信息。

实现细节

  • 配置了 API 文档的基本信息:
    • 标题:"ChronicDiseaseApp API"
    • 描述:"慢病APP 后端接口文档"
    • 版本:"v1"
    • 联系人信息
  • 配置了服务器地址为 http://localhost:8080
  • 使用 GroupedOpenApi 扫描 work.baiyun.chronicdiseaseapp 包下的控制器

MybatisPlusConfig.java

用途

MybatisPlusConfig 是 MyBatis-Plus 配置类,用于配置 MyBatis-Plus 的各种插件。

实现细节

  • 配置了 MybatisPlusInterceptor 拦截器
  • 添加了 OptimisticLockerInnerInterceptor 乐观锁插件
  • 用于处理数据库操作中的并发控制

RestTemplateConfig.java

用途

RestTemplateConfig 是 RestTemplate 配置类,用于创建和配置 RestTemplate Bean。

实现细节

  • 创建了一个 RestTemplate Bean 实例
  • 用于发起 HTTP 请求,例如调用微信接口等

TraceInterceptor.java

用途

TraceInterceptor 是请求跟踪拦截器,用于为每个请求生成唯一的 requestId 和 traceId,便于日志追踪和问题排查。

实现细节

  • 实现了 HandlerInterceptor 接口
  • 从请求头中获取或生成 requestId 和 traceId
  • 将这些 ID 放入 MDC(Mapped Diagnostic Context)中,便于日志输出
  • 在请求完成后清理 MDC 中的信息

WeChatProperties.java

用途

WeChatProperties 是微信相关配置属性类,用于配置微信小程序的 appid 和 secret。

实现细节

  • 使用 @ConfigurationProperties 注解,前缀为 "wechat"
  • 包含 appid 和 secret 两个配置项
  • 用于微信登录等相关功能

WebMvcConfig.java

用途

WebMvcConfig 是 Spring MVC 配置类,用于注册和配置各种拦截器。

实现细节

  • 注册了 AuthInterceptor 和 TraceInterceptor 两个拦截器
  • TraceInterceptor 会拦截所有请求,但排除 Swagger 相关路径
  • AuthInterceptor 会拦截所有请求,但排除登录接口和 Swagger 相关路径
  • 确保 TraceInterceptor 在 AuthInterceptor 之前执行,以便正确设置 MDC 上下文