Skip to content

TestReactor 是一个使用 Spring Boot WebFlux 构建的响应式 Web 应用程序示例。该项目演示了如何使用 Reactor 3 进行响应式编程,包括 Flux 和 Mono 的使用、响应式数据处理、分页功能实现等。

Notifications You must be signed in to change notification settings

onlybigroc/TestReactor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

TestReactor 项目

基于 Spring Boot WebFlux 和 Reactor 3 的响应式编程示例项目。

项目简介

TestReactor 是一个使用 Spring Boot WebFlux 构建的响应式 Web 应用程序示例。该项目演示了如何使用 Reactor 3 进行响应式编程,包括 Flux 和 Mono 的使用、响应式数据处理、分页功能实现等。

项目参考了 使用 Reactor 3 进行响应式编程 系列教程,实现了其中的核心概念和实践方法。

技术栈

  • Spring Boot 3.5.7
  • Spring WebFlux - 响应式 Web 框架
  • Reactor 3.8.0 - 响应式编程库
  • R2DBC - 响应式数据库连接
  • PostgreSQL - 关系型数据库
  • Flyway - 数据库迁移工具
  • Lombok - 简化 Java 代码
  • Maven - 项目构建工具

功能特性

1. 响应式用户管理

  • 用户信息的增删改查操作
  • 响应式数据流处理
  • 响应式 Repository 实现

2. 分页功能

  • 业务友好的分页(页码从1开始)
  • 统一分页参数封装
  • 分页结果封装

3. 数据库迁移

  • 使用 Flyway 管理数据库版本
  • 自动执行数据库迁移脚本
  • 数据库表结构和注释管理

项目结构

src/
├── main/
│   ├── java/
│   │   └── com/qinrenjihe/
│   │       ├── TestReactorApplication.java     # 应用启动类
│   │       ├── common/                         # 通用类
│   │       │   ├── PageResult.java             # 分页结果封装
│   │       │   ├── PageableRequest.java        # 分页请求参数
│   │       │   └── ResponseResult.java         # 响应结果封装
│   │       ├── controller/                     # 控制层
│   │       │   └── UserController.java         # 用户控制器
│   │       ├── entity/                         # 实体类
│   │       │   └── User.java                   # 用户实体
│   │       ├── repo/                           # 数据访问层
│   │       │   ├── ReactiveRepository.java     # 响应式仓库接口
│   │       │   ├── UserRepo.java               # 用户仓库接口
│   │       │   └── impr/                       # 实现类
│   │       │       └── ReactiveUserRepository.java
│   │       ├── service/                        # 服务层
│   │       │   └── UserService.java            # 用户服务
│   │       └── test/                           # Reactor 学习示例
│   │           ├── Part01Flux.java
│   │           ├── Part02Mono.java
│   │           ├── Part03StepVerifier.java
│   │           ├── Part04Transform.java
│   │           ├── Part05Merge.java
│   │           ├── Part06Request.java
│   │           ├── Part07Errors.java
│   │           └── Part09Adapt.java
│   └── resources/
│       ├── db/migration/                       # 数据库迁移脚本
│       │   ├── V0.0.1__Init.sql                # 初始化脚本
│       │   └── V0.0.2__Add_comments_to_users_table.sql  # 添加注释脚本
│       └── application.yml                     # 应用配置文件
└── test/
    ├── Part01FluxTest.java
    ├── Part02MonoTest.java
    ├── Part03StepVerifierTest.java
    ├── Part04TransformTest.java
    ├── Part05MergeTest.java
    ├── Part06RequestTest.java
    ├── Part07ErrorsTest.java
    └── Part09AdaptTest.java

快速开始

环境要求

  • Java 21+
  • Maven 3.6+
  • PostgreSQL 数据库

配置数据库

src/main/resources/application.yml 中配置数据库连接信息:

spring:
  r2dbc:
    url: r2dbc:postgresql://localhost:5432/test
    username: postgres
    password: postgres

构建和运行

# 克隆项目
git clone <项目地址>

# 进入项目目录
cd TestReactor

# 编译项目
mvn clean compile

# 运行项目
mvn spring-boot:run

API 接口

用户管理接口

接口 方法 路径 描述
获取用户 GET /users/{id} 根据 ID 获取用户信息
获取所有用户 GET /users/all 获取所有用户列表
获取用户数量 GET /users/count 获取用户总数
分页获取用户 GET /users 分页获取用户列表

分页参数说明

分页接口支持以下参数:

  • page: 页码(从1开始,默认为1)
  • size: 每页大小(默认为10)

示例请求:GET /users?page=1&size=10

数据库设计

用户表 (users)

字段名 类型 约束 描述
user_id BIGINT PRIMARY KEY 用户唯一标识符
username VARCHAR(255) NOT NULL, UNIQUE 用户登录名
firstname VARCHAR(255) NOT NULL 用户名字
lastname VARCHAR(255) NOT NULL 用户姓氏

学习资源

本项目参考了以下学习资源:

许可证

本项目仅供学习和参考使用。

About

TestReactor 是一个使用 Spring Boot WebFlux 构建的响应式 Web 应用程序示例。该项目演示了如何使用 Reactor 3 进行响应式编程,包括 Flux 和 Mono 的使用、响应式数据处理、分页功能实现等。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages