- 新增项目基础配置:pom.xml 依赖管理、多环境配置(dev/prod)、Dockerfile、.env.example - 新增安全认证模块:JWT 工具类、JWT 过滤器、Spring Security 配置、自定义 UserDetails - 新增用户管理功能:注册/登录/查询/修改、角色管理(USER/ADMIN/ROOT)、分页查询、状态启禁用 - 新增密码重置功能:邮箱验证码发送、验证码校验重置、频率限制与过期机制 - 新增基础架构层:统一响应体 RestBean、全局异常处理、日志拦截器、Redis 工具类、JPA 配置 - 新增 Swagger/OpenAPI 文档配置与完整的 API 接口文档(API_DOCUMENT.md) - 新增数据库初始化 SQL 脚本(init.sql)
Spring Boot Template
基于 Spring Boot 3.5 的通用后端模板项目,开箱即用的认证体系和基础设施,快速启动新业务项目。
内置功能
| 模块 | 说明 |
|---|---|
| JWT 认证 | 注册、登录、Token 验证 |
| 用户管理 | 用户 CRUD、角色(USER/ADMIN)、状态管理 |
| 密码找回 | 邮箱验证码方式重置密码 |
| Spring Security | 方法级权限控制、CORS、路由权限 |
| Redis | 完整的工具类(String/Hash/List/Set/ZSet/Bitmap/HyperLogLog) |
| 全局异常处理 | 统一响应格式、参数校验、业务异常、系统异常 |
| JPA 审计 | 自动填充 createdAt / updatedAt |
| 日志拦截 | 请求 ID、用户信息、耗时统计 |
| Swagger UI | 在线 API 文档 + 调试(Bearer Token 认证) |
| 多环境配置 | dev / prod 配置分离,支持 .env 环境变量 |
技术栈
- Java 17 + Spring Boot 3.5.6
- Spring Data JPA + MySQL
- Spring Data Redis + Lettuce
- Spring Security + JWT (jjwt)
- Springdoc OpenAPI (Swagger)
- Lombok
- Maven
快速开始
1. 环境准备
- JDK 17+
- MySQL 8.0+
- Redis 6.0+
- Maven 3.9+
2. 克隆并配置
# 复制项目
cp -r springboot-template your-project
cd your-project
# 修改包名(按需)
# com.aisi.template -> com.yourcompany.project
# 配置环境变量
cp .env.example .env
# 编辑 .env,填入实际的数据库密码、JWT 密钥等
3. 初始化数据库
CREATE DATABASE IF NOT EXISTS template DEFAULT CHARSET utf8mb4;
执行 src/main/resources/sql/init.sql,或依赖 JPA ddl-auto: update 自动建表。
4. 启动
mvn spring-boot:run
启动后访问:
- Swagger UI: http://localhost:8080/swagger-ui/index.html
- OpenAPI JSON: http://localhost:8080/v3/api-docs
项目结构
src/main/java/com/aisi/template/
├── TemplateApplication.java # 入口
├── config/
│ ├── SecurityConfig.java # Security + CORS + JWT 过滤器
│ ├── JacksonConfig.java # JSON 日期格式
│ ├── JpaConfig.java # JPA 审计
│ ├── RedisConfig.java # Redis 序列化配置
│ ├── WebConfig.java # 日志拦截器注册
│ └── OpenApiConfig.java # Swagger Bearer Token
├── controller/
│ └── UserController.java # 用户相关接口
├── domain/
│ ├── RestBean.java # 统一响应包装
│ ├── RestCode.java # 响应状态码
│ ├── CustomUserDetails.java # Spring Security UserDetails
│ ├── dto/ # 请求 DTO
│ ├── vo/ # 响应 VO
│ ├── entity/ # JPA 实体
│ └── enums/ # 枚举(Role, ErrorCode)
├── exception/
│ └── BusinessException.java # 业务异常
├── filter/
│ └── JwtAuthenticationFilter.java # JWT 认证过滤器
├── handler/
│ └── GlobalExceptionHandler.java # 全局异常处理
├── interceptor/
│ └── LoggingInterceptor.java # 请求日志
├── repository/ # Spring Data JPA 仓库
├── service/ # 业务接口 + 实现
│ └── impl/
└── utils/
├── JwtUtil.java # JWT 工具
├── SecurityUtils.java # 安全上下文工具
└── RedisUtils.java # Redis 工具(全数据类型)
配置说明
通过 .env 文件或环境变量配置,关键配置项:
| 配置项 | 默认值 | 说明 |
|---|---|---|
DB_HOST |
localhost | MySQL 地址 |
DB_PORT |
3306 | MySQL 端口 |
DB_NAME |
template | 数据库名 |
DB_USER |
root | 数据库用户 |
DB_PASS |
root | 数据库密码 |
REDIS_HOST |
localhost | Redis 地址 |
REDIS_PORT |
6379 | Redis 端口 |
REDIS_PASSWORD |
空 | Redis 密码 |
JWT_SECRET |
(内置默认值) | JWT 签名密钥,生产环境必须替换 |
MAIL_HOST |
smtp.163.com | 邮件 SMTP 地址 |
MAIL_USERNAME |
空 | 邮件账号 |
MAIL_PASSWORD |
空 | 邮件授权码 |
Docker 部署
# 构建镜像
docker build -t springboot-template .
# 运行
docker run -d -p 8080:8080 \
-e DB_HOST=host.docker.internal \
-e REDIS_HOST=host.docker.internal \
-e JWT_SECRET=your_production_secret_at_least_64_chars_long \
springboot-template
使用模板创建新项目
- 复制整个项目目录
- 全局替换
com.aisi.template为你的包名 - 修改
pom.xml中的artifactId、name、description - 修改
application.yaml中的spring.application.name - 删除不需要的 Controller/Service,添加你的业务代码
- 在
ErrorCode枚举中添加业务错误码(预留了 2000-2999 范围)
API 文档
License
Apache License 2.0
Description
Languages
Java
99.9%