JavaProjectRepo/framework/docs/技术文档.md

161 lines
5.9 KiB
Markdown
Raw Normal View History

# 项目技术文档
> 项目ProjectFrameWork2025模块`app` / Java 后端)
> 运行环境WindowsJava 21兼容 17+Spring Boot 3.x
## 概述
- 平台型后端服务,采用 `Spring Boot 3.x`,区分 `dev` / `server` 两种运行配置。
- 数据访问使用 `MyBatis-Plus 3.5.6``MyBatis 3.5.16`,连接池为 `Druid`
- 任务调度使用 `Quartz 2.3.2`API 文档采用 `springdoc-openapi` / Swagger UI。
- 支持 WAR 包运行,亦可容器化部署;默认开发端口 `8093``server` 可使用 `8090`)。
## 目录结构
- 仓库根(当前工作目录):`D:\Trae_space\ProjectFrameWork2025\app`
- 主要结构:
```
app/
├── .gitignore
├── Dockerfile
├── frontend/ # 前端说明或资源
│ └── readme.md
├── pom.xml # Maven 构建管理
└── src/
├── main/
│ ├── java/ # 业务代码(入口类在 com.yfd.platform.*
│ └── resources/ # 配置与静态资源
└── test/
└── java/ # 测试代码
```
## 快速开始
- 前置要求:
- 安装 `JDK 21`(兼容 17+`Maven 3.9+``Git`。
- Windows 终端执行 `chcp 65001`,确保 UTF-8 编码输出。
- 构建后端:
- `mvn clean package -DskipTests`
- 本地运行dev
- `java -jar target/platform-1.0.war --spring.profiles.active=dev`
- 运行server
- `java -jar target/platform-1.0.war --spring.profiles.active=server`
- API 文档:
- 默认访问 `http://localhost:8093/swagger-ui/index.html`(以实际配置为准)
## 配置说明
- Profile 切换:
- 通过 `--spring.profiles.active=<dev|server>` 激活环境。
- 关键属性:
- `file-space.system`:文件根路径,需在激活的 profile 中配置。
- `spring.datasource.druid.*`:数据库连接参数与池化配置。
- `server.port`:端口(`dev` 默认 8093`server` 可使用 8090
- VS Code/终端编码建议:
- 启动参数加入 `-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8`
- 终端执行 `chcp 65001`PowerShell 输出设置为 UTF-8。
## 依赖与版本
- `Spring Boot 3.x`
- `MyBatis-Plus 3.5.6`(依赖 `MyBatis 3.5.16+`,需有 `Configuration.parsePendingResultMaps(boolean)`
- `Druid` 数据源
- `Quartz 2.3.2`
- `springdoc-openapi` / Swagger UI
- 日志:`Logback`UTF-8 输出,`logback-spring.xml`
## 数据库配置
- MySQL 连接示例:
```yaml
spring:
datasource:
druid:
master:
url: jdbc:mysql://<host>:3306/<db>?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&useSSL=false&allowPublicKeyRetrieval=true
username: <user>
password: <password>
```
- 远程授权建议:
```sql
CREATE USER 'appuser'@'%' IDENTIFIED BY 'StrongPassword!';
GRANT ALL PRIVILEGES ON <db>.* TO 'appuser'@'%';
FLUSH PRIVILEGES;
```
- Druid 健壮性:
```yaml
spring:
datasource:
druid:
initial-size: 0
test-on-borrow: false
test-while-idle: true
validation-query: SELECT 1
```
## 日志
- 控制台与文件统一 UTF-8 输出:
- 控制台 `ConsoleAppender`,文件 `RollingFileAppender`(按日滚动,保留 30 天)。
- 推荐日志格式:`%d [%thread] %-5level %logger{50} - %msg%n`。
## 定时任务
- 默认 `RAMJobStore`(非集群、内存存储)。
- 如需持久化与集群,改用 `JdbcJobStore` 并配置数据源与表结构。
## 安全与鉴权
- 使用 `JWT` 过滤器进行鉴权(如 `jwtAuthenticationTokenFilter`)。
- 敏感配置(`jwt.secret`、数据库密码)建议通过环境变量或外部密钥管理。
- 生产环境必须启用 HTTPS 并使用强密钥。
## API 文档
- 启用 `swagger-ui.enabled: true`
- 访问路径通常为 `http://<host>:<port>/swagger-ui/index.html`
## Docker 部署
- `Dockerfile` 已暴露端口 `8093`
- 构建镜像:`docker build -t projectframework2025-app:latest .`
- 运行(开发环境):
- `docker run -d --name platform-app -p 8093:8093 -e SPRING_PROFILES_ACTIVE=dev projectframework2025-app:latest`
- 运行(服务器环境):
- `docker run -d --name platform-app -p 8090:8090 -e SPRING_PROFILES_ACTIVE=server projectframework2025-app:latest`
- 如需挂载文件空间:
- `-v D:/data/file-space:/data/file-space -e FILE_SPACE_SYSTEM=/data/file-space`
## 前端
- 前端说明见 `frontend/readme.md`。如需联调,请统一跨域与鉴权策略。
## Git 使用
- 远程仓库:`http://121.37.111.42:3000/ThbTech/ProjectFrameWork2025.git`
- 主分支:`main`
- 常用命令:
- `git pull`、`git add .`、`git commit -m "<message>"`、`git push`
- 提交署名:
- `git config user.name "<Your Name>"`
- `git config user.email "<your@email>"`
## 常见问题
- 中文乱码:
- 执行 `chcp 65001`,确保 `logback-spring.xml` 使用 UTF-8。
- `NoSuchMethodError`MyBatis
- 升级 `MyBatis``3.5.16+` 并与 MP 版本匹配。
- 数据库 `Access denied`
- 校验账户密码与远程授权;必要时新建业务账户并放开 `3306`
- 端口占用/启动失败:
- 检查 `server.port` 与冲突端口;查看应用日志定位根因。
## 运维与监控
- 建议接入 `Spring Boot Actuator``/actuator/health`。
- 配合日志轮转与集中采集ELK/Vector区分环境日志路径。
- 监控数据库与线程池指标Druid/Quartz
## CI/CD 建议
- 在 CI 阶段执行:
- `mvn -B -DskipTests clean package`
- 单元测试与安全扫描(依赖检查、代码质量)
- 在 CD 阶段:
- 推送镜像到私有仓库,环境变量注入敏感信息。
## 变更日志(示例模板)
- `feat:` 新增功能说明
- `fix:` 缺陷修复说明
- `docs:` 文档更新说明
- `refactor:` 重构说明
- `perf:` 性能优化说明
---
如需扩展专题文档(接口规范、部署拓扑、参数字典等),建议在 `docs/` 目录继续维护并与版本管理同步。