# 项目概览 **本文引用的文件** - [pom.xml](file://pom.xml) - [CrmAppApplication.java](file://crm-app/src/main/java/com/crm/app/CrmAppApplication.java) - [application.yml](file://crm-app/src/main/resources/application.yml) - [AuthApplication.java](file://crm-auth/src/main/java/com/crm/auth/AuthApplication.java) - [application.yml](file://crm-auth/src/main/resources/application.yml) - [SecurityConfig.java](file://crm-auth/src/main/java/com/crm/auth/config/SecurityConfig.java) - [PermissionConfig.java](file://crm-auth/src/main/java/com/crm/auth/config/PermissionConfig.java) - [DataInitializer.java](file://crm-auth/src/main/java/com/crm/auth/config/DataInitializer.java) - [AuthController.java](file://crm-auth/src/main/java/com/crm/auth/controller/AuthController.java) - [SystemController.java](file://crm-auth/src/main/java/com/crm/auth/controller/SystemController.java) - [JwtAuthenticationFilter.java](file://crm-auth/src/main/java/com/crm/auth/security/JwtAuthenticationFilter.java) - [TokenService.java](file://crm-auth/src/main/java/com/crm/auth/security/TokenService.java) - [AuthService.java](file://crm-auth/src/main/java/com/crm/auth/service/IAuthService.java) - [AuthUserServiceImpl.java](file://crm-auth/src/main/java/com/crm/auth/service/impl/AuthUserServiceImpl.java) - [SysDeptServiceImpl.java](file://crm-auth/src/main/java/com/crm/auth/service/impl/SysDeptServiceImpl.java) - [BaseEntity.java](file://crm-base/src/main/java/com/crm/base/domain/entity/BaseEntity.java) - [OwnedEntity.java](file://crm-base/src/main/java/com/crm/base/domain/entity/OwnedEntity.java) - [Result.java](file://crm-base/src/main/java/com/crm/base/domain/result/Result.java) - [PageResult.java](file://crm-base/src/main/java/com/crm/base/domain/result/PageResult.java) - [GlobalExceptionHandlerAdvice.java](file://crm-base/src/main/java/com/crm/base/advice/GlobalExceptionHandlerAdvice.java) - [MybatisPlusConfig.java](file://crm-base/src/main/java/com/crm/base/config/MybatisPlusConfig.java) - [RedisConfig.java](file://crm-base/src/main/java/com/crm/base/config/RedisConfig.java) - [JacksonConfig.java](file://crm-base/src/main/java/com/crm/base/config/JacksonConfig.java) - [SnowflakeIdWorker.java](file://crm-base/src/main/java/com/crm/base/config/SnowflakeIdWorker.java) - [DataScope.java](file://crm-base/src/main/java/com/crm/base/annotation/DataScope.java) - [DataScopeHelper.java](file://crm-base/src/main/java/com/crm/base/security/DataScopeHelper.java) - [LoginUser.java](file://crm-base/src/main/java/com/crm/base/security/LoginUser.java) - [FileApi.java](file://crm-file/src/main/java/com/crm/file/api/FileApi.java) - [FileController.java](file://crm-file/src/main/java/com/crm/file/controller/FileController.java) - [MinioConfig.java](file://crm-file/src/main/java/com/crm/file/config/MinioConfig.java) - [FileProperties.java](file://crm-file/src/main/java/com/crm/file/config/FileProperties.java) - [FileInfoServiceImpl.java](file://crm-file/src/main/java/com/crm/file/service/impl/FileInfoServiceImpl.java) - [FileApiImpl.java](file://crm-file/src/main/java/com/crm/file/service/impl/FileApiImpl.java) - [KkFileViewClient.java](file://crm-file/src/main/java/com/crm/file/service/KkFileViewClient.java) - [OrphanChunkCleanupTask.java](file://crm-file/src/main/java/com/crm/file/task/OrphanChunkCleanupTask.java) ## 目录 1. [简介](#简介) 2. [项目结构](#项目结构) 3. [核心组件](#核心组件) 4. [架构总览](#架构总览) 5. [详细组件分析](#详细组件分析) 6. [依赖关系分析](#依赖关系分析) 7. [性能考虑](#性能考虑) 8. [故障排查指南](#故障排查指南) 9. [结论](#结论) 10. [附录](#附录) ## 简介 本文件为 CRM 后端项目的全面概览文档,面向初学者与有经验的开发者。内容涵盖整体架构、技术栈选择、模块划分与职责、微服务设计(认证服务 crm-auth、基础框架 crm-base、文件服务 crm-file)、启动方式、配置管理与部署建议。通过循序渐进的说明与图示,帮助读者快速建立对项目的整体认知,并深入理解关键实现细节。 ## 项目结构 本项目采用多模块 Maven 工程组织,按领域与服务边界拆分: - crm-app:应用入口与聚合层,负责统一装配与对外暴露能力。 - crm-auth:认证与权限服务,提供登录鉴权、用户/角色/菜单/部门管理、数据权限等。 - crm-base:公共基础库,封装通用实体、结果封装、异常处理、安全上下文、分页、序列化、数据库与缓存配置、分布式ID生成等。 - crm-file:文件服务,提供分片上传、断点续传、在线预览、清理任务等功能,底层对接 MinIO 对象存储。 ```mermaid graph TB subgraph "应用层" APP["crm-app
应用入口"] end subgraph "业务服务" AUTH["crm-auth
认证与权限服务"] FILE["crm-file
文件服务"] end subgraph "基础库" BASE["crm-base
通用能力"] end APP --> AUTH APP --> FILE AUTH --> BASE FILE --> BASE ``` 图表来源 - [CrmAppApplication.java](file://crm-app/src/main/java/com/crm/app/CrmAppApplication.java) - [AuthApplication.java](file://crm-auth/src/main/java/com/crm/auth/AuthApplication.java) 章节来源 - [pom.xml](file://pom.xml) - [CrmAppApplication.java](file://crm-app/src/main/java/com/crm/app/CrmAppApplication.java) - [AuthApplication.java](file://crm-auth/src/main/java/com/crm/auth/AuthApplication.java) ## 核心组件 - 应用入口与装配 - 应用主类负责 Spring Boot 启动与模块扫描,配置文件位于 resources/application.yml。 - 认证与权限(crm-auth) - 控制器:登录、系统信息接口。 - 安全:JWT 过滤器、令牌服务、权限配置、数据范围拦截器。 - 服务:用户、角色、菜单、部门、身份等核心业务能力。 - 配置:安全策略、权限规则、初始化数据。 - 基础框架(crm-base) - 通用实体与 DTO、统一返回体、分页、枚举、异常体系。 - 安全上下文、数据权限注解与辅助工具。 - MyBatis-Plus、Redis、Jackson、雪花算法等基础设施配置。 - 文件服务(crm-file) - 控制器与 API 抽象,文件上传下载、分片会话、在线预览客户端。 - MinIO 配置与属性、定时清理孤立分片任务。 章节来源 - [application.yml](file://crm-app/src/main/resources/application.yml) - [AuthController.java](file://crm-auth/src/main/java/com/crm/auth/controller/AuthController.java) - [SystemController.java](file://crm-auth/src/main/java/com/crm/auth/controller/SystemController.java) - [SecurityConfig.java](file://crm-auth/src/main/java/com/crm/auth/config/SecurityConfig.java) - [PermissionConfig.java](file://crm-auth/src/main/java/com/crm/auth/config/PermissionConfig.java) - [JwtAuthenticationFilter.java](file://crm-auth/src/main/java/com/crm/auth/security/JwtAuthenticationFilter.java) - [TokenService.java](file://crm-auth/src/main/java/com/crm/auth/security/TokenService.java) - [IAuthService.java](file://crm-auth/src/main/java/com/crm/auth/service/IAuthService.java) - [AuthUserServiceImpl.java](file://crm-auth/src/main/java/com/crm/auth/service/impl/AuthUserServiceImpl.java) - [SysDeptServiceImpl.java](file://crm-auth/src/main/java/com/crm/auth/service/impl/SysDeptServiceImpl.java) - [BaseEntity.java](file://crm-base/src/main/java/com/crm/base/domain/entity/BaseEntity.java) - [OwnedEntity.java](file://crm-base/src/main/java/com/crm/base/domain/entity/OwnedEntity.java) - [Result.java](file://crm-base/src/main/java/com/crm/base/domain/result/Result.java) - [PageResult.java](file://crm-base/src/main/java/com/crm/base/domain/result/PageResult.java) - [GlobalExceptionHandlerAdvice.java](file://crm-base/src/main/java/com/crm/base/advice/GlobalExceptionHandlerAdvice.java) - [MybatisPlusConfig.java](file://crm-base/src/main/java/com/crm/base/config/MybatisPlusConfig.java) - [RedisConfig.java](file://crm-base/src/main/java/com/crm/base/config/RedisConfig.java) - [JacksonConfig.java](file://crm-base/src/main/java/com/crm/base/config/JacksonConfig.java) - [SnowflakeIdWorker.java](file://crm-base/src/main/java/com/crm/base/config/SnowflakeIdWorker.java) - [DataScope.java](file://crm-base/src/main/java/com/crm/base/annotation/DataScope.java) - [DataScopeHelper.java](file://crm-base/src/main/java/com/crm/base/security/DataScopeHelper.java) - [LoginUser.java](file://crm-base/src/main/java/com/crm/base/security/LoginUser.java) - [FileApi.java](file://crm-file/src/main/java/com/crm/file/api/FileApi.java) - [FileController.java](file://crm-file/src/main/java/com/crm/file/controller/FileController.java) - [MinioConfig.java](file://crm-file/src/main/java/com/crm/file/config/MinioConfig.java) - [FileProperties.java](file://crm-file/src/main/java/com/crm/file/config/FileProperties.java) - [FileInfoServiceImpl.java](file://crm-file/src/main/java/com/crm/file/service/impl/FileInfoServiceImpl.java) - [FileApiImpl.java](file://crm-file/src/main/java/com/crm/file/service/impl/FileApiImpl.java) - [KkFileViewClient.java](file://crm-file/src/main/java/com/crm/file/service/KkFileViewClient.java) - [OrphanChunkCleanupTask.java](file://crm-file/src/main/java/com/crm/file/task/OrphanChunkCleanupTask.java) ## 架构总览 CRM 后端采用“应用聚合 + 领域服务 + 基础库”的分层与模块化架构。crm-app 作为聚合入口,按需引入 crm-auth 与 crm-file;两者均依赖 crm-base 提供的通用能力。认证服务内置 JWT 鉴权与 RBAC 权限模型,支持数据范围控制;文件服务基于 MinIO 提供对象存储能力,并通过第三方预览服务完成在线预览。 ```mermaid graph TB Client["客户端"] --> App["crm-app
应用入口"] App --> Auth["crm-auth
认证与权限服务"] App --> File["crm-file
文件服务"] Auth --> Base["crm-base
基础框架"] File --> Base Auth --> DB["数据库"] File --> MinIO["MinIO 对象存储"] File --> Preview["在线预览服务"] ``` 图表来源 - [CrmAppApplication.java](file://crm-app/src/main/java/com/crm/app/CrmAppApplication.java) - [AuthApplication.java](file://crm-auth/src/main/java/com/crm/auth/AuthApplication.java) - [SecurityConfig.java](file://crm-auth/src/main/java/com/crm/auth/config/SecurityConfig.java) - [MinioConfig.java](file://crm-file/src/main/java/com/crm/file/config/MinioConfig.java) ## 详细组件分析 ### 认证服务(crm-auth) - 职责 - 用户登录与令牌签发校验 - 角色、菜单、部门与用户关系管理 - 数据权限(数据范围)控制 - 第三方登录扩展(如钉钉) - 关键流程(登录与鉴权) ```mermaid sequenceDiagram participant C as "客户端" participant AC as "AuthController" participant TS as "TokenService" participant S as "AuthService" participant U as "AuthUserService" participant F as "JwtAuthenticationFilter" participant R as "Redis" C->>AC : "POST /auth/login" AC->>S : "登录请求" S->>U : "查询用户与权限" U-->>S : "用户信息与角色菜单" S-->>AC : "认证结果" AC->>TS : "签发JWT" TS->>R : "写入会话/黑名单" TS-->>AC : "令牌" AC-->>C : "返回令牌" C->>F : "携带令牌访问受保护接口" F->>TS : "解析与校验令牌" TS-->>F : "校验结果" F-->>C : "放行或拒绝" ``` 图表来源 - [AuthController.java](file://crm-auth/src/main/java/com/crm/auth/controller/AuthController.java) - [TokenService.java](file://crm-auth/src/main/java/com/crm/auth/security/TokenService.java) - [IAuthService.java](file://crm-auth/src/main/java/com/crm/auth/service/IAuthService.java) - [AuthUserServiceImpl.java](file://crm-auth/src/main/java/com/crm/auth/service/impl/AuthUserServiceImpl.java) - [JwtAuthenticationFilter.java](file://crm-auth/src/main/java/com/crm/auth/security/JwtAuthenticationFilter.java) - 权限与数据范围 - 使用注解与拦截器实现方法级权限控制与数据范围过滤。 - 数据范围由 crm-base 的 DataScope 注解与 DataScopeHelper 共同驱动。 ```mermaid flowchart TD Start(["进入受保护方法"]) --> CheckAnno["检查 @DataScope 注解"] CheckAnno --> HasScope{"存在数据范围?"} HasScope --> |否| Proceed["直接执行业务逻辑"] HasScope --> |是| BuildSQL["构建数据范围 SQL"] BuildSQL --> Apply["应用到查询条件"] Apply --> Proceed Proceed --> End(["返回结果"]) ``` 图表来源 - [DataScope.java](file://crm-base/src/main/java/com/crm/base/annotation/DataScope.java) - [DataScopeHelper.java](file://crm-base/src/main/java/com/crm/base/security/DataScopeHelper.java) 章节来源 - [AuthController.java](file://crm-auth/src/main/java/com/crm/auth/controller/AuthController.java) - [SystemController.java](file://crm-auth/src/main/java/com/crm/auth/controller/SystemController.java) - [SecurityConfig.java](file://crm-auth/src/main/java/com/crm/auth/config/SecurityConfig.java) - [PermissionConfig.java](file://crm-auth/src/main/java/com/crm/auth/config/PermissionConfig.java) - [JwtAuthenticationFilter.java](file://crm-auth/src/main/java/com/crm/auth/security/JwtAuthenticationFilter.java) - [TokenService.java](file://crm-auth/src/main/java/com/crm/auth/security/TokenService.java) - [IAuthService.java](file://crm-auth/src/main/java/com/crm/auth/service/IAuthService.java) - [AuthUserServiceImpl.java](file://crm-auth/src/main/java/com/crm/auth/service/impl/AuthUserServiceImpl.java) - [SysDeptServiceImpl.java](file://crm-auth/src/main/java/com/crm/auth/service/impl/SysDeptServiceImpl.java) - [DataScope.java](file://crm-base/src/main/java/com/crm/base/annotation/DataScope.java) - [DataScopeHelper.java](file://crm-base/src/main/java/com/crm/base/security/DataScopeHelper.java) ### 基础框架(crm-base) - 职责 - 统一返回体 Result、分页 PageResult - 全局异常处理 GlobalExceptionHandlerAdvice - 通用实体 BaseEntity、OwnedEntity - 安全上下文 LoginUser、数据权限工具 - MyBatis-Plus、Redis、Jackson、雪花ID等配置 - 关键类关系 ```mermaid classDiagram class BaseEntity { +id +createTime +updateTime } class OwnedEntity { +ownerId +tenantId } class Result { +code +message +data } class PageResult { +list +total +page +size } class GlobalExceptionHandlerAdvice { +handleException() } class LoginUser { +userId +roles +permissions } class DataScopeHelper { +buildScopeSql() } class SnowflakeIdWorker { +nextId() } OwnedEntity --|> BaseEntity : "继承" GlobalExceptionHandlerAdvice --> Result : "返回统一响应" PageResult --> Result : "组合" ``` 图表来源 - [BaseEntity.java](file://crm-base/src/main/java/com/crm/base/domain/entity/BaseEntity.java) - [OwnedEntity.java](file://crm-base/src/main/java/com/crm/base/domain/entity/OwnedEntity.java) - [Result.java](file://crm-base/src/main/java/com/crm/base/domain/result/Result.java) - [PageResult.java](file://crm-base/src/main/java/com/crm/base/domain/result/PageResult.java) - [GlobalExceptionHandlerAdvice.java](file://crm-base/src/main/java/com/crm/base/advice/GlobalExceptionHandlerAdvice.java) - [LoginUser.java](file://crm-base/src/main/java/com/crm/base/security/LoginUser.java) - [DataScopeHelper.java](file://crm-base/src/main/java/com/crm/base/security/DataScopeHelper.java) - [SnowflakeIdWorker.java](file://crm-base/src/main/java/com/crm/base/config/SnowflakeIdWorker.java) 章节来源 - [BaseEntity.java](file://crm-base/src/main/java/com/crm/base/domain/entity/BaseEntity.java) - [OwnedEntity.java](file://crm-base/src/main/java/com/crm/base/domain/entity/OwnedEntity.java) - [Result.java](file://crm-base/src/main/java/com/crm/base/domain/result/Result.java) - [PageResult.java](file://crm-base/src/main/java/com/crm/base/domain/result/PageResult.java) - [GlobalExceptionHandlerAdvice.java](file://crm-base/src/main/java/com/crm/base/advice/GlobalExceptionHandlerAdvice.java) - [MybatisPlusConfig.java](file://crm-base/src/main/java/com/crm/base/config/MybatisPlusConfig.java) - [RedisConfig.java](file://crm-base/src/main/java/com/crm/base/config/RedisConfig.java) - [JacksonConfig.java](file://crm-base/src/main/java/com/crm/base/config/JacksonConfig.java) - [SnowflakeIdWorker.java](file://crm-base/src/main/java/com/crm/base/config/SnowflakeIdWorker.java) - [DataScope.java](file://crm-base/src/main/java/com/crm/base/annotation/DataScope.java) - [DataScopeHelper.java](file://crm-base/src/main/java/com/crm/base/security/DataScopeHelper.java) - [LoginUser.java](file://crm-base/src/main/java/com/crm/base/security/LoginUser.java) ### 文件服务(crm-file) - 职责 - 文件上传(支持分片与会话)、下载、元信息管理 - 在线预览(对接第三方预览服务) - 对象存储(MinIO)配置与管理 - 定时清理孤立分片文件 - 典型流程(分片上传) ```mermaid flowchart TD A["客户端发起初始化"] --> B["创建上传会话"] B --> C["分片上传片段"] C --> D{"所有分片上传完成?"} D --> |否| C D --> |是| E["合并分片到对象存储"] E --> F["记录文件元信息"] F --> G["返回文件信息"] ``` 图表来源 - [FileController.java](file://crm-file/src/main/java/com/crm/file/controller/FileController.java) - [FileApiImpl.java](file://crm-file/src/main/java/com/crm/file/service/impl/FileApiImpl.java) - [FileInfoServiceImpl.java](file://crm-file/src/main/java/com/crm/file/service/impl/FileInfoServiceImpl.java) - [MinioConfig.java](file://crm-file/src/main/java/com/crm/file/config/MinioConfig.java) - [FileProperties.java](file://crm-file/src/main/java/com/crm/file/config/FileProperties.java) - [OrphanChunkCleanupTask.java](file://crm-file/src/main/java/com/crm/file/task/OrphanChunkCleanupTask.java) 章节来源 - [FileApi.java](file://crm-file/src/main/java/com/crm/file/api/FileApi.java) - [FileController.java](file://crm-file/src/main/java/com/crm/file/controller/FileController.java) - [MinioConfig.java](file://crm-file/src/main/java/com/crm/file/config/MinioConfig.java) - [FileProperties.java](file://crm-file/src/main/java/com/crm/file/config/FileProperties.java) - [FileInfoServiceImpl.java](file://crm-file/src/main/java/com/crm/file/service/impl/FileInfoServiceImpl.java) - [FileApiImpl.java](file://crm-file/src/main/java/com/crm/file/service/impl/FileApiImpl.java) - [KkFileViewClient.java](file://crm-file/src/main/java/com/crm/file/service/KkFileViewClient.java) - [OrphanChunkCleanupTask.java](file://crm-file/src/main/java/com/crm/file/task/OrphanChunkCleanupTask.java) ### 概念性总览 下图展示各服务之间的调用关系与外部依赖,便于从宏观层面理解系统交互。 ```mermaid graph LR Client["客户端"] --> Gateway["网关/聚合层"] Gateway --> Auth["认证服务"] Gateway --> File["文件服务"] Auth --> DB["数据库"] Auth --> Cache["缓存(Redis)"] File --> Storage["对象存储(MinIO)"] File --> Preview["在线预览服务"] ``` [此图为概念性流程图,不直接映射具体源码文件] ## 依赖关系分析 - 模块耦合 - crm-app 依赖 crm-auth 与 crm-file,二者均依赖 crm-base。 - crm-auth 内部通过 service/mapper 分层,security 层与 config 层解耦。 - crm-file 通过 api 抽象与 controller 分离,service 层对接 MinIO 与预览服务。 - 外部依赖 - 数据库:MyBatis-Plus 配置在 crm-base。 - 缓存:Redis 配置在 crm-base。 - 对象存储:MinIO 配置在 crm-file。 - 第三方预览:KkFileView 客户端在 crm-file。 ```mermaid graph TB APP["crm-app"] --> AUTH["crm-auth"] APP --> FILE["crm-file"] AUTH --> BASE["crm-base"] FILE --> BASE AUTH --> DB["数据库(MyBatis-Plus)"] AUTH --> REDIS["缓存(Redis)"] FILE --> MINIO["对象存储(MinIO)"] FILE --> PREVIEW["在线预览(KkFileView)"] ``` 图表来源 - [pom.xml](file://pom.xml) - [MybatisPlusConfig.java](file://crm-base/src/main/java/com/crm/base/config/MybatisPlusConfig.java) - [RedisConfig.java](file://crm-base/src/main/java/com/crm/base/config/RedisConfig.java) - [MinioConfig.java](file://crm-file/src/main/java/com/crm/file/config/MinioConfig.java) - [KkFileViewClient.java](file://crm-file/src/main/java/com/crm/file/service/KkFileViewClient.java) 章节来源 - [pom.xml](file://pom.xml) - [MybatisPlusConfig.java](file://crm-base/src/main/java/com/crm/base/config/MybatisPlusConfig.java) - [RedisConfig.java](file://crm-base/src/main/java/com/crm/base/config/RedisConfig.java) - [MinioConfig.java](file://crm-file/src/main/java/com/crm/file/config/MinioConfig.java) - [KkFileViewClient.java](file://crm-file/src/main/java/com/crm/file/service/KkFileViewClient.java) ## 性能考虑 - 数据库 - 使用 MyBatis-Plus 简化 CRUD,合理设计索引与分页查询,避免 N+1 问题。 - 复杂查询可结合自定义 SQL 注入器优化。 - 缓存 - 热点数据(如权限、字典、部门树)可放入 Redis,降低数据库压力。 - 注意缓存一致性与过期策略。 - 文件 - 分片上传提升大文件稳定性与并发吞吐。 - 定期清理孤立分片,释放存储空间。 - 序列化 - Jackson 配置需关注时区、空值处理与字段过滤,减少无效数据传输。 - ID 生成 - 雪花算法保证分布式唯一且有序,避免自增主键瓶颈。 [本节为通用指导,不直接分析具体文件] ## 故障排查指南 - 认证失败 - 检查 JWT 过滤器与令牌服务是否正确解析与校验。 - 确认 Redis 中会话状态与黑名单配置。 - 权限不足 - 核对角色-菜单-权限配置是否完整。 - 检查 @DataScope 注解与数据范围 SQL 生成是否正确。 - 文件上传失败 - 验证 MinIO 连接与桶策略。 - 检查分片会话与会话超时设置。 - 查看孤立分片清理任务是否正常运行。 - 全局异常 - 通过全局异常处理器定位错误码与消息,结合日志输出定位根因。 章节来源 - [JwtAuthenticationFilter.java](file://crm-auth/src/main/java/com/crm/auth/security/JwtAuthenticationFilter.java) - [TokenService.java](file://crm-auth/src/main/java/com/crm/auth/security/TokenService.java) - [GlobalExceptionHandlerAdvice.java](file://crm-base/src/main/java/com/crm/base/advice/GlobalExceptionHandlerAdvice.java) - [MinioConfig.java](file://crm-file/src/main/java/com/crm/file/config/MinioConfig.java) - [OrphanChunkCleanupTask.java](file://crm-file/src/main/java/com/crm/file/task/OrphanChunkCleanupTask.java) ## 结论 本项目以清晰的模块边界与稳定的基础能力为核心,构建了可扩展的 CRM 后端体系。认证服务提供完善的鉴权与数据权限,文件服务提供稳定可靠的对象存储与预览能力,基础框架则确保一致的编码规范与通用能力复用。通过合理的配置与部署策略,可在不同环境中快速交付与运维。 [本节为总结性内容,不直接分析具体文件] ## 附录 - 启动方式 - 分别运行各服务的 Application 主类(如 CrmAppApplication、AuthApplication),或通过打包后 java -jar 启动。 - 配置文件位于各模块 resources/application.yml,可按环境覆盖。 - 配置管理 - 数据库、Redis、MinIO、JWT、序列化等均在对应模块的配置类中集中管理。 - 建议通过环境变量或配置中心进行差异化配置。 - 部署架构 - 推荐容器化部署,每个服务独立镜像,配合编排平台统一管理。 - 外部依赖(数据库、Redis、MinIO、预览服务)通过服务发现或配置中心接入。 章节来源 - [CrmAppApplication.java](file://crm-app/src/main/java/com/crm/app/CrmAppApplication.java) - [AuthApplication.java](file://crm-auth/src/main/java/com/crm/auth/AuthApplication.java) - [application.yml](file://crm-app/src/main/resources/application.yml) - [application.yml](file://crm-auth/src/main/resources/application.yml) - [MybatisPlusConfig.java](file://crm-base/src/main/java/com/crm/base/config/MybatisPlusConfig.java) - [RedisConfig.java](file://crm-base/src/main/java/com/crm/base/config/RedisConfig.java) - [MinioConfig.java](file://crm-file/src/main/java/com/crm/file/config/MinioConfig.java) - [JacksonConfig.java](file://crm-base/src/main/java/com/crm/base/config/JacksonConfig.java)