基于函数式编程模型实现 Spring WebFlux

本文介绍了如何使用SpringWebFlux的函数式编程模型来实现Web服务,包括创建项目、配置、定义HandlerFunction和RouterFunction,以及启动服务器。同时,文章还展示了如何利用WebClient进行非阻塞的HTTP请求,实现客户端调用。

基于函数式编程模型实现 Spring WebFlux

在使用函数式编程模型时,我们需要自行初始化服务器。

在基于函数式的编程模型中,有两个核心的接口,分别是 RouterFunction 和 HandlerFunction,

其中 RouterFunction 实现了路由功能,将请求转发给对应的 handler,

HandlerFunction 则代表了处理传入请求并生成响应的函数。

在这种编程模型中,我们的核心任务就是定义这两个函数式接口的实现并启动所需的服务器。

在Spring MVC中,代表服务端HTTP请求和响应的两个对象是 ServletRequest 和 ServletRespose,但在 Spring WebFlux 中,代表服务器端HTTP请求和响应的两个对象是 ServerRequest 和 ServerRespose。

1、基于函数式编程模型实现 Spring WebFlux

1、创建Springboot项目,添加相关的依赖

    <!--webflux依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
        <version>2.6.3</version>
    </dependency>

    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.16</version>
    </dependency>

2、编写配置文件

server.port=8081

3、编写文件目录结构

实体类:User

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
   
   
    private int id;
    private String name;
    private int age;
}

service层接口:UserService

public interface UserService {
   
   

    //根据id查询,返回一个或0个使用 Mono
    Mono<User> queryById(int id);

    //查询所有,返回多个使用 Flux
    Flux<User> query();

    //添加用户
    Mono<Void> insert(Mono<User> user);
}

4、创建 Handler(具体的实现方法)

注意导包的时候,要导入 reactive 下的包

package com.haoming.handler;

import com.haoming.entity.User;
import com.haoming.service.UserService;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerRe
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万里顾—程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值