Skip to content

realYurk/spring-boot-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Spring Boot Project Generator

一款轻量、极速的 Spring Boot 3 企业级工程一键生成器

Spring Boot Java MyBatis-Plus Redis License

在快节奏的数字化研发环境中,快速搭建稳定、高性能的底层脚手架是项目落地的第一步。本项目提供了一个开箱即用的工程生成器,内置了完善的手机号登录/注册闭环、JWT 双令牌(Dual Token)认证体系以及标准的全局异常和响应规范。非常适合作为现代化企业级应用的初始骨架。


✨ 核心特性

  • 📦 极速生成:通过命令行交互或传参,秒级生成包含标准包结构的完整 Maven 工程。
  • 🔐 高阶安全认证:内置完整的 JWT 双 Token(AccessToken + RefreshToken)无感续期机制及登出黑名单功能。
  • 📱 便捷的账户闭环:原生集成“手机号 + 验证码”登录模式,未注册手机号自动完成注册逻辑。
  • 🛠 无痛开发调试:内置 SMS Mock 机制,无需对接真实短信网关即可完成全链路测试。
  • 🏗 企业级代码规范:统一的 BaseResponse、标准分页请求、全局异常拦截以及基于注解的 AOP 权限控制。

🚀 快速上手 (Quick Start)

只需简单三步,即可运行属于你的全新 Spring Boot 工程。

1. 编译生成器

首先,进入生成器源码目录并将其打包为一个可执行的 JAR 文件:

cd spring-boot-generator
mvn clean package -q

2. 运行生成器

你可以选择交互模式,或者直接通过命令行参数极速生成:

交互模式:

java -jar target/spring-boot-generator.jar

命令行模式: 格式:java -jar spring-boot-generator.jar <工程名> <包名> [输出目录]

# 示例:在 ./projects 目录下生成一个名为 order-service 的工程
java -jar target/spring-boot-generator.jar order-service com.myco ./projects

便捷脚本(可选):

# Windows 环境
generate.bat order-service com.myco

# Mac/Linux 环境
./generate.sh order-service com.myco

3. 启动新工程

进入刚刚生成的工程目录,初始化数据库并启动服务:

cd ./projects/order-service

# 初始化数据库脚本
mysql -u root -p < sql/init.sql

# 启动 Spring Boot 服务
mvn spring-boot:run

💡 Tip: 服务启动后,可直接访问 Knife4j 接口文档:http://localhost:8080/doc.html


📱 开发与调试指南

为了提升本地研发效率,项目默认开启了短信 Mock 功能,无需真实的短信服务即可完成登录注册调试。

相关配置 (application.yml):

sms:
  mock-enable: true # 默认已开启

调试流程:

  1. 发送验证码:POST /user/sms/send,传入参数 {"phone":"13800000000"}
  2. 执行登录:POST /user/login/phone,传入参数 {"phone":"13800000000","code":"123456"}
  3. 响应结果:系统将返回 accessTokenrefreshToken。若 isNewUser=true,则说明当前手机号为首次自动注册。

🔑 认证与鉴权 (JWT Dual Token)

本项目采用安全的双 Token 机制,确保用户体验与系统安全的平衡。

  • 常规接口调用:登录后,在所有需要权限的接口请求 Header 中添加 AccessToken:
    Authorization: Bearer <accessToken>
  • Token 无感续期:当 AccessToken 过期(接口返回 40102 状态码)后,客户端可通过 RefreshToken 获取新的 AccessToken,实现无感续期:
    POST /user/token/refresh
    Header: Refresh-Token: <refreshToken>

🏗 生成工程的目录结构

生成的工程严格遵循合理的职责分离原则:

├── annotation/      # 自定义注解(如 @AuthCheck 权限校验)
├── aop/             # 切面编程(包含 JWT 鉴权 AOP 拦截器)
├── common/          # 通用基类(BaseResponse / PageRequest / ResultUtils)
├── config/          # 核心配置(Redis / MybatisPlus / Cors / Knife4j)
├── constant/        # 常量池(UserConstant / RedisConstant Key统一管理)
├── controller/      # 控制层(如内置的 SysUserController)
├── exception/       # 异常处理(ErrorCode / BusinessException / GlobalHandler)
├── mapper/          # 数据访问层(MyBatis-Plus Mapper)
├── model/           # 数据模型(entity / dto / vo / enums 分层设计)
├── service/         # 业务逻辑层及 Impl 实现类
└── utils/           # 工具类(JwtUtils / SmsUtils / AvatarUtils)

📡 内置接口清单

新工程生成后,默认自带以下核心用户模块的接口,可直接用于业务级联:

模块 权限层级 请求方式 接口路径 接口说明
认证 🟢 公开 POST /user/sms/send 发送手机验证码(自带 60s 限频)
认证 🟢 公开 POST /user/login/phone 手机号登录/自动注册
认证 🟢 公开 POST /user/token/refresh 刷新 AccessToken (续期)
用户 🟡 需鉴权 GET /user/me 获取当前登录用户信息
用户 🟡 需鉴权 PUT /user/me 更新当前登录个人信息
用户 🟡 需鉴权 GET /user/{id} 获取指定用户的公开信息
用户 🟡 需鉴权 POST /user/logout 账号登出(RefreshToken 加入黑名单)
管理 🔴 管理员 GET /user/admin/page 分页查询全量用户
管理 🔴 管理员 PUT /user/admin/ban 封禁/解封违规用户
管理 🔴 管理员 DELETE /user/admin 物理/逻辑删除用户

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors