library-picturebook-activity/java-backend/README.md

178 lines
4.9 KiB
Markdown
Raw Normal View History

# Creation Java Backend
Spring Boot 后端基础框架
## 技术栈
| 组件 | 技术 | 版本 |
|:------|:------|:------|
| 框架 | Spring Boot | 3.2.4 |
| 持久层 | MyBatis-Plus | 3.5.5 |
| 数据库 | MySQL 8.0 | 8.0.33 |
| 迁移 | Flyway | 10.10.0 |
| 认证 | Spring Security + JWT | 0.12.3 |
| 缓存 | Redis | - |
| 连接池 | Alibaba Druid | 1.2.20 |
| 对象映射 | MapStruct | 1.5.5.Final |
| API 文档 | Knife4j | 4.4.0 |
| 日志 | Logback | - |
| JSON | FastJSON2 | 2.0.43 |
| 工具类 | Hutool | 5.8.26 |
## 快速开始
### 环境要求
- Java 17+
- Maven 3.8+
- MySQL 8.0+
- Redis 6.0+
### 配置数据库
1. 创建数据库
```sql
CREATE DATABASE creation_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
2. 修改 `src/main/resources/application-dev.yml` 中的数据库连接信息
### 启动应用
```bash
cd java-backend
mvn spring-boot:run -Dspring-boot.run.profiles=dev
```
启动成功后访问:
- 应用地址http://localhost:8580
- API 文档http://localhost:8580/swagger-ui.html
## 项目结构
```
java-backend/
├── src/main/java/com/lesingle/creation/
│ ├── CreationApplication.java # 启动类
│ ├── common/ # 公共模块
│ │ ├── config/ # 配置类
│ │ │ ├── MybatisPlusConfig.java
│ │ │ ├── SecurityConfig.java
│ │ │ └── JwtProperties.java
│ │ ├── constant/ # 常量定义
│ │ │ └── ErrorCode.java
│ │ ├── core/ # 核心类
│ │ │ └── Result.java
│ │ ├── exception/ # 异常处理
│ │ │ ├── BusinessException.java
│ │ │ └── GlobalExceptionHandler.java
│ │ ├── filter/ # 过滤器
│ │ │ └── JwtAuthenticationFilter.java
│ │ └── util/ # 工具类
│ │ └── JwtTokenUtil.java
│ ├── controller/ # 控制器
│ ├── service/ # 服务层
│ ├── mapper/ # Mapper 接口
│ ├── entity/ # 实体类
│ ├── dto/ # 数据传输对象
│ └── vo/ # 视图对象
├── src/main/resources/
│ ├── application.yml # 主配置
│ ├── application-dev.yml # 开发环境
│ ├── application-test.yml # 测试环境
│ ├── application-prod.yml # 生产环境
│ ├── db/migration/ # Flyway 迁移脚本
│ │ └── V1.0__init_schema.sql
│ └── logback-spring.xml # 日志配置
└── pom.xml # Maven 配置
```
## 默认账户
Flyway 初始迁移后会自动创建以下账户:
| 用户名 | 密码 | 角色 |
|:------|:------|:------|
| admin | admin123 | 超级管理员 |
## 开发规范
### 三层架构
| 层级 | 职责 | 数据流 |
|:------|:------|:------|
| **Controller** | 接收请求、参数校验 | DTO ↔ VO |
| **Service** | 业务逻辑、事务控制 | 使用 Entity |
| **Mapper** | 数据库 CRUD | 使用 Entity |
### 代码规范
- Java 17 严格模式
- 注释和日志使用中文
- 使用 Lombok 简化代码
- 使用 MapStruct 进行对象映射
### 日志规范
- 所有日志使用中文
- 使用 MDC 实现 TraceId 链路追踪
- 开发环境DEBUG 级别
- 生产环境INFO/WARN 级别
## 常用命令
```bash
# 编译
mvn clean compile
# 打包
mvn clean package
# 运行(开发环境)
mvn spring-boot:run -Dspring-boot.run.profiles=dev
# 运行(测试环境)
mvn spring-boot:run -Dspring-boot.run.profiles=test
# 运行(生产环境)
mvn spring-boot:run -Dspring-boot.run.profiles=prod
# 跳过测试打包
mvn clean package -DskipTests
# 查看依赖
mvn dependency:tree
```
## API 接口
### 认证相关
- `POST /api/auth/login` - 用户登录
- `POST /api/auth/logout` - 用户登出
- `POST /api/auth/register` - 用户注册
- `POST /api/auth/refresh` - 刷新 Token
### 用户相关
- `GET /api/users` - 用户列表
- `GET /api/users/{id}` - 获取用户详情
- `POST /api/users` - 创建用户
- `PUT /api/users/{id}` - 更新用户
- `DELETE /api/users/{id}` - 删除用户
## 环境变量(生产环境)
生产环境部署时需设置以下环境变量:
| 变量名 | 说明 | 示例 |
|:------|:------|:------|
| `DATABASE_URL` | 数据库连接 URL | `jdbc:mysql://host:3306/db` |
| `DB_USERNAME` | 数据库用户名 | `root` |
| `DB_PASSWORD` | 数据库密码 | `password` |
| `REDIS_HOST` | Redis 主机 | `localhost` |
| `REDIS_PORT` | Redis 端口 | `6379` |
| `REDIS_PASSWORD` | Redis 密码 | `password` |
| `JWT_SECRET` | JWT 密钥 | `your-secret-key` |
## License
MIT