# 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