JavaProjectRepo/docs/技术文档.md

161 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目技术文档
> 项目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/` 目录继续维护并与版本管理同步。