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.
9.9 KiB
9.9 KiB
应用入口模块(crm-app)
**本文引用的文件** - [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)目录
简介
本章节面向“应用入口模块 crm-app”,聚焦 Spring Boot 应用的启动配置、多模块统一启动方式、配置文件结构与环境变量管理,以及服务注册发现、部署配置、监控集成与日志配置等运维要点。该模块作为聚合启动器,负责装配各业务子模块(如认证、基础能力、文件服务等),并提供统一的运行入口与环境适配。
项目结构
crm-app 为 Spring Boot 的启动模块,包含:
- 启动类:定义应用主类与扫描范围
- 配置文件:application.yml 提供默认配置项
- Maven 构建:通过父 POM 与子模块 POM 进行依赖管理与打包
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
- crm-base/pom.xml
- crm-auth/pom.xml
- crm-file/pom.xml
章节来源
- pom.xml
- 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
- crm-app/src/main/resources/application.yml
- crm-app/pom.xml
架构总览
下图展示以 crm-app 为入口的多模块 Spring Boot 应用整体架构,包括启动流程、配置加载、模块装配与外部依赖接入。
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
- crm-app/src/main/resources/application.yml
- crm-base/pom.xml
- crm-auth/pom.xml
- 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
配置文件与环境变量
- application.yml 作用
- 统一声明 Web 端口、上下文路径、时区、字符集等
- 数据源连接信息、Redis 连接、MinIO/OSS 端点与凭据
- 安全相关(JWT、密码策略)、第三方客户端(钉钉等)配置
- 环境变量覆盖
- 支持通过系统环境变量或启动参数覆盖 yml 中的键值
- 推荐在生产使用环境变量管理敏感信息(密钥、连接串)
- 多环境配置建议
- 使用 spring.profiles.active 切换 dev/test/prod
- 将敏感配置放入环境变量或外部配置中心
章节来源
- 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
- crm-app/pom.xml
- crm-base/pom.xml
- crm-auth/pom.xml
- crm-file/pom.xml
服务注册与发现(可选)
- 若引入注册中心(Nacos/Eureka/Consul),需在 crm-app 依赖中添加对应 starter
- 在 application.yml 中配置注册中心地址、命名空间、鉴权信息
- 通过 @EnableDiscoveryClient 或自动配置启用服务注册与发现
- 网关或服务间调用需配合负载均衡与熔断降级
章节来源
- crm-app/pom.xml
- 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
- 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
依赖关系分析
下图展示 crm-app 与其子模块之间的依赖关系,以及关键外部依赖的接入点。
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
- crm-app/pom.xml
- crm-base/pom.xml
- crm-auth/pom.xml
- crm-file/pom.xml
章节来源
- pom.xml
- crm-app/pom.xml
性能与可观测性
- JVM 调优
- 根据容器资源限制合理设置堆大小与 GC 策略
- 开启 JIT 预热与编译优化
- 连接池
- 数据库连接池与 Redis 连接池参数按 QPS 与延迟目标调整
- 监控告警
- 基于 Actuator + Prometheus + Alertmanager 建立阈值告警
- 关键错误码与慢查询纳入日志与指标体系
[本节为通用指导,不直接分析具体文件]
故障排查指南
- 启动失败
- 检查端口占用、数据源与缓存连通性
- 查看启动日志定位 Bean 创建失败或循环依赖
- 配置问题
- 确认 profiles 激活与优先级(命令行 > 环境变量 > application.yml)
- 校验敏感配置是否被正确注入
- 运行时异常
- 通过 Actuator 与健康检查快速定位
- 结合链路追踪与结构化日志定位问题根因
章节来源
- 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
[本节为补充说明,不直接分析具体文件]