shenjianZ 3a9bf61839 feat: 初始化 Spring Boot 项目模板,搭建完整的用户认证与管理系统
- 新增项目基础配置: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)
2026-03-31 08:54:06 +08:00

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

启动后访问:

项目结构

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

使用模板创建新项目

  1. 复制整个项目目录
  2. 全局替换 com.aisi.template 为你的包名
  3. 修改 pom.xml 中的 artifactIdnamedescription
  4. 修改 application.yaml 中的 spring.application.name
  5. 删除不需要的 Controller/Service添加你的业务代码
  6. ErrorCode 枚举中添加业务错误码(预留了 2000-2999 范围)

API 文档

详见 API_DOCUMENT.md

License

Apache License 2.0

Description
No description provided
Readme 219 KiB
Languages
Java 99.9%