Skip to content

A production-ready REST API template featuring JWT authentication with Spring Security, JPA Specifications for dynamic queries, Redis caching, and MySQL containerized deployment. Includes Swagger documentation, unified exception handling, pagination support, and transactional management for rapid backend development.

Notifications You must be signed in to change notification settings

jyoketsu/spring-boot-template

Repository files navigation

Spring-boot-template

目录结构

├── model           实体类
├── dto             数据传输对象
├── repository      数据层
├── service         业务层
├── controller      API层
├── config          JPA审计,全局拦截(advice)
├── util            工具类
└── exception       异常处理

RESTful Web Service

HelloController.java

Entity

BaseEntity
NamedEntity
Dictionary
Ingredient

DTO

IngredientBodyDTO AuthRequestDTO

JPA

IngredientRepository.java

MySQL

JPA 审计

  • 引入 Spring Data JPA 的 @EnableJpaAuditing 以启用自动时间管理,例:JpaConfig.java
  • @CreatedDate @LastModifiedDate,例:BaseEntity.java

多对一

多个当前实体对象Ingredient可以对应一个关联的目标实体对象Dictionary

多对多

Recipe(菜谱)和Ingredient(食材)是多对多,创建中间实体RecipeIngredient

@JsonIgnore

Ingredient.java

投影 Projection

RecipeRepository.java

JPQL

RecipeRepository.java

NativeSQL

RecipeRepository.java

@JsonFormat

BaseEntity RecipeProjection RecipeSummaryDTO

分页查询

统一响应格式

ApiResponse.java

分页响应格式

PageResponse.java

异常处理

复杂动态查询

根据名称和单位动态查询食材

GET /ingredients/search?name=鸡蛋&unit=1

基于菜谱名、描述和多个食材名的动态查询

GET /recipes/list/search?name=面条&description=辣&ingredients=肉丝 青椒

Redis 缓存

Docker

Transaction

lombok

User.java RecipeIngredientId.java

Spring Security & JWT (注册登录)

角色权限

密码加密存储:BCrypt

AccessToken & RefreshToken

Kaptcha

Actions

备份数据库

此脚本用于备份 mydatabase 数据库。它会连接到正在运行的 MySQL Docker 容器,使用 mysqldump 导出数据,并通过 gzip 进行实时压缩,最终生成一个带有时间戳的 .sql.gz 文件。

使用方法

  1. 添加执行权限 (只需操作一次):

    chmod +x backup.sh
  2. 运行备份脚本:

    ./backup.sh

    脚本执行后,会在项目根目录下的 ./mysql_backups/ 文件夹中创建一个名为 backup_YYYY-MM-DD_HH-MM-SS.sql.gz 的压缩备份文件。

恢复数据库

此脚本用于从一个 .sql.gz 备份文件中恢复 mydatabase 数据库。它会自动查找所有可用的备份文件,并提供一个交互式菜单供您选择。请注意:这是一个危险操作,它会覆盖当前数据库的所有数据。

使用方法

  1. 添加执行权限 (只需操作一次):

    chmod +x restore.sh
  2. 运行恢复脚本:

    ./restore.sh

    脚本会列出所有在 ./mysql_backups/ 目录中找到的备份文件。您只需输入对应的数字并按回车,然后根据提示输入 y 确认,即可开始恢复过程。

RestTemplate

Dotenv (仅在 dev 环境下加载)

生产环境环境变量配置

  • GitHub 仓库配置Actions secrets
  • docker-compose.yml 配置environment,这样,Spring Boot 就能通过 application.properties 读取环境变量。
  • main.yml脚本中写入 .env 文件(docker-compose 会自动读取 .env 里的变量)。

About

A production-ready REST API template featuring JWT authentication with Spring Security, JPA Specifications for dynamic queries, Redis caching, and MySQL containerized deployment. Includes Swagger documentation, unified exception handling, pagination support, and transactional management for rapid backend development.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages