epoch-boot 详细文档
1. 项目概述
epoch-boot 是 Epoch 平台的业务层,基于 epoch-framework 构建,提供了一系列开箱即用的业务功能模块和基础应用,旨在为企业级应用开发提供快速构建能力。该模块采用模块化设计,各业务模块之间低耦合,可根据需求灵活组合使用。
2. 项目结构
epoch-boot/
├── epoch-app-core/ # 应用核心模块
├── epoch-admin/ # 后台管理模块
├── epoch-file/ # 文件管理模块
├── epoch-generator/ # 代码生成模块
├── epoch-dict/ # 字典管理模块
├── epoch-notify/ # 通知管理模块
├── epoch-task/ # 任务管理模块
├── epoch-monitor/ # 监控管理模块
└── pom.xml # 项目根 POM
3. 核心模块
3.1 应用核心模块 (epoch-app-core)
提供应用开发所需的基础功能支持,包括用户认证、权限管理、日志管理等。
主要功能:
- 用户认证与授权
- 角色管理
- 权限管理
- 日志管理
- 系统配置管理
- 数据权限控制
3.2 后台管理模块 (epoch-admin)
提供完整的后台管理系统功能,包括用户管理、角色管理、权限管理、系统配置等。
主要功能:
- 用户管理
- 角色管理
- 权限管理
- 菜单管理
- 系统配置
- 日志管理
- 数据字典
3.3 文件管理模块 (epoch-file)
提供文件上传、下载、预览等功能,支持本地存储和云存储。
主要功能:
- 文件上传
- 文件下载
- 文件预览
- 文件管理
- 存储策略配置
- 权限控制
3.4 代码生成模块 (epoch-generator)
提供代码自动生成功能,支持根据数据库表结构生成前后端代码。
主要功能:
- 数据库表结构解析
- 实体类生成
- Mapper 接口生成
- Service 层生成
- Controller 层生成
- 前端页面生成
- 代码模板配置
3.5 字典管理模块 (epoch-dict)
提供数据字典管理功能,支持系统中各种枚举和常量的统一管理。
主要功能:
- 字典类型管理
- 字典项管理
- 字典查询接口
- 缓存支持
- 权限控制
3.6 通知管理模块 (epoch-notify)
提供系统通知功能,支持邮件、短信、站内信等多种通知方式。
主要功能:
- 通知模板管理
- 通知发送
- 通知记录查询
- 通知方式配置
- 权限控制
3.7 任务管理模块 (epoch-task)
提供任务管理功能,支持定时任务、异步任务等。
主要功能:
- 任务定义管理
- 任务调度管理
- 任务执行记录
- 任务监控
- 权限控制
3.8 监控管理模块 (epoch-monitor)
提供系统监控功能,包括应用指标监控、数据库监控、缓存监控等。
主要功能:
- 应用指标监控
- 数据库监控
- 缓存监控
- 接口调用监控
- 系统资源监控
- 告警配置
4. 设计理念
4.1 模块化设计
各业务模块之间低耦合,可独立使用和扩展,避免了功能的紧耦合。
4.2 基于框架层
基于 epoch-framework 构建,充分利用框架层提供的基础能力,减少重复开发。
4.3 前后端分离
采用前后端分离的架构设计,后端提供 RESTful API,前端可自由选择技术栈。
4.4 权限控制
提供细粒度的权限控制,支持菜单权限、按钮权限、数据权限等。
4.5 可扩展性
提供丰富的扩展接口和配置选项,支持自定义业务逻辑和功能扩展。
5. 技术栈
| 技术/框架 | 版本 | 用途 |
|---|---|---|
| Spring Boot | 3.4.1 | 基础框架 |
| Spring Cloud | 2024.0.0 | 微服务支持 |
| Spring Cloud Alibaba | 2023.0.3.2 | 微服务组件 |
| MyBatis | 3.5.17 | 持久层框架 |
| MyBatis Plus | 3.5.15 | MyBatis 增强工具 |
| Redis | 3.50.0 | 缓存 |
| RocketMQ | 2.3.1 | 消息队列 |
| Sa-Token | 1.44.0 | 安全框架 |
| Knife4j | 4.6.0 | API 文档 |
| XXL-Job | 2.4.0 | 分布式任务调度 |
| SkyWalking | 9.0.0 | 分布式追踪 |
6. 快速开始
6.1 环境要求
- JDK 17+
- Maven 3.6+
- MySQL 8.0+
- Redis 6.0+
- RocketMQ 4.9+
6.2 引入依赖
<!-- 在项目中引入 epoch-boot 依赖 -->
<dependency>
<groupId>com.epoch</groupId>
<artifactId>epoch-app-core</artifactId>
<version>${epoch.version}</version>
</dependency>
<!-- 根据需要引入其他模块 -->
<dependency>
<groupId>com.epoch</groupId>
<artifactId>epoch-admin</artifactId>
<version>${epoch.version}</version>
</dependency>
6.3 配置使用
-
数据库配置:
spring:
datasource:
url: jdbc:mysql://localhost:3306/epoch?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver -
Redis 配置:
spring:
redis:
host: localhost
port: 6379
password: password
database: 0 -
启动应用:
@SpringBootApplication
@EnableEpochBoot
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
7. 扩展机制
epoch-boot 提供了多种扩展机制:
- 接口扩展:通过实现预留接口扩展功能
- 配置扩展:通过配置文件自定义功能参数
- 组件替换:通过 Spring Boot 的自动配置机制替换默认实现
- 模块组合:根据需求组合使用不同的业务模块
8. 最佳实践
- 按需引入:只引入项目需要的业务模块,减少不必要的依赖
- 合理配置:根据实际需求配置各模块参数
- 遵循规范:使用框架提供的统一规范和工具类
- 适当扩展:在需要时通过扩展机制自定义功能
- 权限控制:合理配置权限,确保系统安全
- 性能优化:定期监控系统性能,优化系统配置
9. 版本更新
9.1 主要版本
- 3.x:基于 Spring Boot 3.x,支持最新技术栈
- 2.x:基于 Spring Boot 2.x,稳定版本
9.2 升级指南
请参考项目的升级文档进行版本升级,注意查看版本间的兼容性变化。
10. 部署方式
10.1 单体应用部署
将所有模块打包为一个 JAR 包,通过 Java 命令直接运行:
java -jar epoch-boot.jar
10.2 微服务部署
将各模块拆分为独立的微服务,通过服务注册中心进行服务发现和调用:
# 启动服务注册中心
docker run -d -p 8761:8761 springcloud/eureka
# 启动配置中心
docker run -d -p 8888:8888 springcloud/configserver
# 启动各微服务
java -jar epoch-app-core.jar
java -jar epoch-admin.jar
java -jar epoch-file.jar
10.3 容器化部署
使用 Docker 容器化部署各模块:
FROM openjdk:17-jdk-alpine
VOLUME /tmp
ADD epoch-boot.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
11. 监控与维护
11.1 监控指标
- 应用指标:CPU 使用率、内存使用率、GC 情况等
- 业务指标:接口调用次数、响应时间、错误率等
- 数据库指标:SQL 执行时间、连接数、缓存命中率等
11.2 日志管理
- 应用日志:记录应用运行过程中的日志信息
- 访问日志:记录接口访问情况
- 错误日志:记录应用运行过程中的错误信息
11.3 常见问题排查
- 数据库连接问题:检查数据库配置和网络连接
- Redis 连接问题:检查 Redis 配置和网络连接
- 权限问题:检查用户权限配置
- 性能问题:使用监控工具分析系统性能
12. 安全建议
- 权限控制:合理配置用户权限,遵循最小权限原则
- 密码策略:使用强密码策略,定期更换密码
- 数据加密:敏感数据进行加密存储
- 接口安全:使用 HTTPS 协议,防止数据传输过程中的泄露
- 定期备份:定期备份数据库和配置文件
- 漏洞扫描:定期进行漏洞扫描,及时修复安全漏洞