You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
258 lines
9.9 KiB
258 lines
9.9 KiB
|
1 month ago
|
# 应用入口模块(crm-app)
|
||
|
|
|
||
|
|
<cite>
|
||
|
|
**本文引用的文件**
|
||
|
|
- [pom.xml](file://pom.xml)
|
||
|
|
- [crm-app/pom.xml](file://crm-app/pom.xml)
|
||
|
|
- [crm-app/src/main/java/com/crm/app/CrmAppApplication.java](file://crm-app/src/main/java/com/crm/app/CrmAppApplication.java)
|
||
|
|
- [crm-app/src/main/resources/application.yml](file://crm-app/src/main/resources/application.yml)
|
||
|
|
- [crm-auth/pom.xml](file://crm-auth/pom.xml)
|
||
|
|
- [crm-base/pom.xml](file://crm-base/pom.xml)
|
||
|
|
- [crm-file/pom.xml](file://crm-file/pom.xml)
|
||
|
|
</cite>
|
||
|
|
|
||
|
|
## 目录
|
||
|
|
1. [简介](#简介)
|
||
|
|
2. [项目结构](#项目结构)
|
||
|
|
3. [核心组件](#核心组件)
|
||
|
|
4. [架构总览](#架构总览)
|
||
|
|
5. [详细组件分析](#详细组件分析)
|
||
|
|
6. [依赖关系分析](#依赖关系分析)
|
||
|
|
7. [性能与可观测性](#性能与可观测性)
|
||
|
|
8. [故障排查指南](#故障排查指南)
|
||
|
|
9. [结论](#结论)
|
||
|
|
10. [附录](#附录)
|
||
|
|
|
||
|
|
## 简介
|
||
|
|
本章节面向“应用入口模块 crm-app”,聚焦 Spring Boot 应用的启动配置、多模块统一启动方式、配置文件结构与环境变量管理,以及服务注册发现、部署配置、监控集成与日志配置等运维要点。该模块作为聚合启动器,负责装配各业务子模块(如认证、基础能力、文件服务等),并提供统一的运行入口与环境适配。
|
||
|
|
|
||
|
|
## 项目结构
|
||
|
|
crm-app 为 Spring Boot 的启动模块,包含:
|
||
|
|
- 启动类:定义应用主类与扫描范围
|
||
|
|
- 配置文件:application.yml 提供默认配置项
|
||
|
|
- Maven 构建:通过父 POM 与子模块 POM 进行依赖管理与打包
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph TB
|
||
|
|
A["crm-app(启动模块)"] --> B["crm-base(基础能力)"]
|
||
|
|
A --> C["crm-auth(认证授权)"]
|
||
|
|
A --> D["crm-file(文件服务)"]
|
||
|
|
A --> E["其他业务模块(按需引入)"]
|
||
|
|
subgraph "Maven 工程"
|
||
|
|
F["根 pom.xml(聚合/依赖管理)"]
|
||
|
|
G["crm-app/pom.xml(启动器依赖)"]
|
||
|
|
end
|
||
|
|
F --> G
|
||
|
|
G --> B
|
||
|
|
G --> C
|
||
|
|
G --> D
|
||
|
|
```
|
||
|
|
|
||
|
|
图表来源
|
||
|
|
- [crm-app/pom.xml](file://crm-app/pom.xml)
|
||
|
|
- [crm-base/pom.xml](file://crm-base/pom.xml)
|
||
|
|
- [crm-auth/pom.xml](file://crm-auth/pom.xml)
|
||
|
|
- [crm-file/pom.xml](file://crm-file/pom.xml)
|
||
|
|
|
||
|
|
章节来源
|
||
|
|
- [pom.xml](file://pom.xml)
|
||
|
|
- [crm-app/pom.xml](file://crm-app/pom.xml)
|
||
|
|
|
||
|
|
## 核心组件
|
||
|
|
- 启动类:Spring Boot 应用主类,用于引导容器、启用自动配置与组件扫描
|
||
|
|
- 配置文件:application.yml 集中管理端口、数据源、缓存、安全、第三方客户端等
|
||
|
|
- 模块依赖:通过 Maven 聚合与依赖声明,将 crm-base、crm-auth、crm-file 等能力注入到启动器
|
||
|
|
|
||
|
|
章节来源
|
||
|
|
- [crm-app/src/main/java/com/crm/app/CrmAppApplication.java](file://crm-app/src/main/java/com/crm/app/CrmAppApplication.java)
|
||
|
|
- [crm-app/src/main/resources/application.yml](file://crm-app/src/main/resources/application.yml)
|
||
|
|
- [crm-app/pom.xml](file://crm-app/pom.xml)
|
||
|
|
|
||
|
|
## 架构总览
|
||
|
|
下图展示以 crm-app 为入口的多模块 Spring Boot 应用整体架构,包括启动流程、配置加载、模块装配与外部依赖接入。
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph TB
|
||
|
|
subgraph "进程内"
|
||
|
|
APP["CrmAppApplication<br/>Spring Boot 启动器"]
|
||
|
|
CFG["application.yml<br/>配置中心"]
|
||
|
|
BASE["crm-base<br/>通用能力(异常/工具/安全上下文)"]
|
||
|
|
AUTH["crm-auth<br/>认证授权/权限/用户角色菜单"]
|
||
|
|
FILE["crm-file<br/>文件上传/预览/清理任务"]
|
||
|
|
end
|
||
|
|
subgraph "外部依赖"
|
||
|
|
DB["数据库(MySQL/PostgreSQL)"]
|
||
|
|
CACHE["缓存(Redis)"]
|
||
|
|
OSS["对象存储(Minio/S3)"]
|
||
|
|
EXT["第三方服务(钉钉/企业微信等)"]
|
||
|
|
end
|
||
|
|
APP --> CFG
|
||
|
|
APP --> BASE
|
||
|
|
APP --> AUTH
|
||
|
|
APP --> FILE
|
||
|
|
AUTH --> DB
|
||
|
|
AUTH --> CACHE
|
||
|
|
FILE --> OSS
|
||
|
|
AUTH --> EXT
|
||
|
|
```
|
||
|
|
|
||
|
|
图表来源
|
||
|
|
- [crm-app/src/main/java/com/crm/app/CrmAppApplication.java](file://crm-app/src/main/java/com/crm/app/CrmAppApplication.java)
|
||
|
|
- [crm-app/src/main/resources/application.yml](file://crm-app/src/main/resources/application.yml)
|
||
|
|
- [crm-base/pom.xml](file://crm-base/pom.xml)
|
||
|
|
- [crm-auth/pom.xml](file://crm-auth/pom.xml)
|
||
|
|
- [crm-file/pom.xml](file://crm-file/pom.xml)
|
||
|
|
|
||
|
|
## 详细组件分析
|
||
|
|
|
||
|
|
### 启动类与装配
|
||
|
|
- 启动类职责
|
||
|
|
- 定义应用主类并触发 Spring Boot 自动装配
|
||
|
|
- 指定组件扫描包路径,确保 crm-base、crm-auth、crm-file 等模块的 Bean 被正确发现
|
||
|
|
- 可通过注解或属性开关控制功能特性(如定时任务、Web 服务器、安全过滤器)
|
||
|
|
- 常见扩展点
|
||
|
|
- 自定义 EnvironmentPostProcessor 用于动态配置注入
|
||
|
|
- CommandLineRunner/SmartLifecycle 用于启动后初始化逻辑
|
||
|
|
- @ConditionalOnProperty/@EnableXxx 实现按环境启停能力
|
||
|
|
|
||
|
|
章节来源
|
||
|
|
- [crm-app/src/main/java/com/crm/app/CrmAppApplication.java](file://crm-app/src/main/java/com/crm/app/CrmAppApplication.java)
|
||
|
|
|
||
|
|
### 配置文件与环境变量
|
||
|
|
- application.yml 作用
|
||
|
|
- 统一声明 Web 端口、上下文路径、时区、字符集等
|
||
|
|
- 数据源连接信息、Redis 连接、MinIO/OSS 端点与凭据
|
||
|
|
- 安全相关(JWT、密码策略)、第三方客户端(钉钉等)配置
|
||
|
|
- 环境变量覆盖
|
||
|
|
- 支持通过系统环境变量或启动参数覆盖 yml 中的键值
|
||
|
|
- 推荐在生产使用环境变量管理敏感信息(密钥、连接串)
|
||
|
|
- 多环境配置建议
|
||
|
|
- 使用 spring.profiles.active 切换 dev/test/prod
|
||
|
|
- 将敏感配置放入环境变量或外部配置中心
|
||
|
|
|
||
|
|
章节来源
|
||
|
|
- [crm-app/src/main/resources/application.yml](file://crm-app/src/main/resources/application.yml)
|
||
|
|
|
||
|
|
### 多模块统一启动方式
|
||
|
|
- Maven 聚合
|
||
|
|
- 根 pom.xml 聚合所有子模块,便于统一版本与依赖管理
|
||
|
|
- crm-app/pom.xml 声明对 crm-base、crm-auth、crm-file 的依赖
|
||
|
|
- 启动命令
|
||
|
|
- 在 crm-app 目录下执行 mvn spring-boot:run 或打包后 java -jar 运行
|
||
|
|
- 通过 -Dspring.profiles.active=dev|test|prod 切换环境
|
||
|
|
- 依赖冲突解决
|
||
|
|
- 在根 pom.xml 中统一管理第三方库版本
|
||
|
|
- 使用 dependencyManagement 收敛版本,避免传递依赖冲突
|
||
|
|
|
||
|
|
章节来源
|
||
|
|
- [pom.xml](file://pom.xml)
|
||
|
|
- [crm-app/pom.xml](file://crm-app/pom.xml)
|
||
|
|
- [crm-base/pom.xml](file://crm-base/pom.xml)
|
||
|
|
- [crm-auth/pom.xml](file://crm-auth/pom.xml)
|
||
|
|
- [crm-file/pom.xml](file://crm-file/pom.xml)
|
||
|
|
|
||
|
|
### 服务注册与发现(可选)
|
||
|
|
- 若引入注册中心(Nacos/Eureka/Consul),需在 crm-app 依赖中添加对应 starter
|
||
|
|
- 在 application.yml 中配置注册中心地址、命名空间、鉴权信息
|
||
|
|
- 通过 @EnableDiscoveryClient 或自动配置启用服务注册与发现
|
||
|
|
- 网关或服务间调用需配合负载均衡与熔断降级
|
||
|
|
|
||
|
|
章节来源
|
||
|
|
- [crm-app/pom.xml](file://crm-app/pom.xml)
|
||
|
|
- [crm-app/src/main/resources/application.yml](file://crm-app/src/main/resources/application.yml)
|
||
|
|
|
||
|
|
### 部署配置与打包
|
||
|
|
- 构建产物
|
||
|
|
- 使用 maven-jar-plugin 或 spring-boot-maven-plugin 生成可执行 jar
|
||
|
|
- 分离依赖与配置,便于容器化与滚动升级
|
||
|
|
- 容器化
|
||
|
|
- 基于 OpenJDK 镜像,设置 JVM 参数(内存、GC、时区)
|
||
|
|
- 通过环境变量注入敏感配置,挂载只读配置文件
|
||
|
|
- 健康检查与就绪探针
|
||
|
|
- 暴露 /actuator/health 与 /actuator/info
|
||
|
|
- 在编排平台配置 liveness/readiness 探针
|
||
|
|
|
||
|
|
章节来源
|
||
|
|
- [crm-app/pom.xml](file://crm-app/pom.xml)
|
||
|
|
- [crm-app/src/main/resources/application.yml](file://crm-app/src/main/resources/application.yml)
|
||
|
|
|
||
|
|
### 监控集成与日志配置
|
||
|
|
- Actuator 指标
|
||
|
|
- 暴露 JVM、线程池、HTTP 请求、数据库连接池等指标
|
||
|
|
- 结合 Prometheus/Grafana 采集与可视化
|
||
|
|
- 链路追踪
|
||
|
|
- 集成 Sleuth/Zipkin 或 SkyWalking,输出 TraceId
|
||
|
|
- 日志
|
||
|
|
- 使用 Logback/Log4j2,按模块与级别输出
|
||
|
|
- 生产建议输出 JSON 格式,便于日志收集与分析
|
||
|
|
|
||
|
|
章节来源
|
||
|
|
- [crm-app/src/main/resources/application.yml](file://crm-app/src/main/resources/application.yml)
|
||
|
|
|
||
|
|
## 依赖关系分析
|
||
|
|
下图展示 crm-app 与其子模块之间的依赖关系,以及关键外部依赖的接入点。
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph LR
|
||
|
|
ROOT["根 pom.xml"] --> APP["crm-app/pom.xml"]
|
||
|
|
APP --> BASE["crm-base/pom.xml"]
|
||
|
|
APP --> AUTH["crm-auth/pom.xml"]
|
||
|
|
APP --> FILE["crm-file/pom.xml"]
|
||
|
|
AUTH --> DB["数据库驱动"]
|
||
|
|
AUTH --> REDIS["Redis 客户端"]
|
||
|
|
FILE --> MINIO["MinIO/S3 客户端"]
|
||
|
|
```
|
||
|
|
|
||
|
|
图表来源
|
||
|
|
- [pom.xml](file://pom.xml)
|
||
|
|
- [crm-app/pom.xml](file://crm-app/pom.xml)
|
||
|
|
- [crm-base/pom.xml](file://crm-base/pom.xml)
|
||
|
|
- [crm-auth/pom.xml](file://crm-auth/pom.xml)
|
||
|
|
- [crm-file/pom.xml](file://crm-file/pom.xml)
|
||
|
|
|
||
|
|
章节来源
|
||
|
|
- [pom.xml](file://pom.xml)
|
||
|
|
- [crm-app/pom.xml](file://crm-app/pom.xml)
|
||
|
|
|
||
|
|
## 性能与可观测性
|
||
|
|
- JVM 调优
|
||
|
|
- 根据容器资源限制合理设置堆大小与 GC 策略
|
||
|
|
- 开启 JIT 预热与编译优化
|
||
|
|
- 连接池
|
||
|
|
- 数据库连接池与 Redis 连接池参数按 QPS 与延迟目标调整
|
||
|
|
- 监控告警
|
||
|
|
- 基于 Actuator + Prometheus + Alertmanager 建立阈值告警
|
||
|
|
- 关键错误码与慢查询纳入日志与指标体系
|
||
|
|
|
||
|
|
[本节为通用指导,不直接分析具体文件]
|
||
|
|
|
||
|
|
## 故障排查指南
|
||
|
|
- 启动失败
|
||
|
|
- 检查端口占用、数据源与缓存连通性
|
||
|
|
- 查看启动日志定位 Bean 创建失败或循环依赖
|
||
|
|
- 配置问题
|
||
|
|
- 确认 profiles 激活与优先级(命令行 > 环境变量 > application.yml)
|
||
|
|
- 校验敏感配置是否被正确注入
|
||
|
|
- 运行时异常
|
||
|
|
- 通过 Actuator 与健康检查快速定位
|
||
|
|
- 结合链路追踪与结构化日志定位问题根因
|
||
|
|
|
||
|
|
章节来源
|
||
|
|
- [crm-app/src/main/resources/application.yml](file://crm-app/src/main/resources/application.yml)
|
||
|
|
|
||
|
|
## 结论
|
||
|
|
crm-app 作为 Spring Boot 应用的统一入口,承担启动装配、配置管理与模块聚合职责。通过清晰的依赖边界与环境隔离,能够支撑从开发到生产的平滑演进。建议在后续迭代中完善服务注册发现、监控与日志规范,提升系统的可观测性与可维护性。
|
||
|
|
|
||
|
|
[本节为总结性内容,不直接分析具体文件]
|
||
|
|
|
||
|
|
## 附录
|
||
|
|
- 常用启动命令
|
||
|
|
- 本地开发:mvn spring-boot:run -pl crm-app -am
|
||
|
|
- 打包运行:mvn clean package -DskipTests && java -jar target/crm-app.jar
|
||
|
|
- 指定环境:java -jar target/crm-app.jar --spring.profiles.active=prod
|
||
|
|
- 环境变量示例
|
||
|
|
- SERVER_PORT、SPRING_PROFILES_ACTIVE
|
||
|
|
- SPRING_DATASOURCE_*、SPRING_REDIS_*
|
||
|
|
- MINIO_ENDPOINT、MINIO_ACCESS_KEY、MINIO_SECRET_KEY
|
||
|
|
|
||
|
|
[本节为补充说明,不直接分析具体文件]
|