当前位置: 首页 > article >正文

Spring WebFlux 入门指南

Spring WebFlux 入门指南

1. 什么是 Spring WebFlux?

Spring WebFlux 是 Spring 5 引入的一个基于 Reactor 的响应式编程框架,它是 Spring MVC 的异步非阻塞替代方案,适用于高并发场景。

2. WebFlux 与 Spring MVC 对比

特性Spring WebFluxSpring MVC
编程模型响应式(Reactive Streams)阻塞式(Servlet API)
适用场景高并发、低延迟传统 Web 应用
线程模型事件驱动(少量线程处理大量请求)线程池(每个请求占用一个线程)
底层容器Netty、Undertow、TomcatTomcat、Jetty

3. 搭建 Spring WebFlux 项目

3.1 添加依赖

在 Spring Boot 项目中使用 WebFlux,需要添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

3.2 创建 WebFlux 控制器

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.time.Duration;
import java.util.Arrays;
import java.util.List;

@RestController
@RequestMapping("/webflux")
public class WebFluxController {

    @GetMapping("/mono")
    public Mono<String> getMono() {
        return Mono.just("Hello, WebFlux!");
    }

    @GetMapping("/flux")
    public Flux<String> getFlux() {
        List<String> data = Arrays.asList("Hello", "WebFlux", "! ");
        return Flux.fromIterable(data).delayElements(Duration.ofSeconds(1));
    }
}

3.3 运行与测试

启动 Spring Boot 应用,使用 curl 或浏览器访问:

  • http://localhost:8080/webflux/mono -> 返回 Hello, WebFlux!
  • http://localhost:8080/webflux/flux -> 逐个返回 HelloWebFlux!(带 1 秒间隔)

4. 使用 WebClient 进行请求

Spring WebFlux 提供了 WebClient 作为 RestTemplate 的响应式替代方案。

import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

public class WebClientExample {
    public static void main(String[] args) {
        WebClient webClient = WebClient.create("http://localhost:8080");
        
        Mono<String> response = webClient.get()
                .uri("/webflux/mono")
                .retrieve()
                .bodyToMono(String.class);
        
        response.subscribe(System.out::println);
    }
}

5. 总结

Spring WebFlux 适用于高并发、低延迟的场景,使用非阻塞编程模型和 Reactor 响应式流。它提供了 WebClient 作为响应式 HTTP 客户端,可以与 WebFlux 服务器端无缝对接。

欢迎尝试 Spring WebFlux,并在你的应用中体验它的高效和灵活性!


http://www.kler.cn/a/574350.html

相关文章:

  • 计算机视觉之dlib人脸关键点绘制及微笑测试
  • C语言基础之【指针】(下)
  • 【嵌入式通信协议】 I²C 详细介绍
  • 【LeetCode111】二叉树的最小深度
  • 哈尔滨服务器租用的流程
  • JVM基本概念及内存管理模型
  • 34.二叉树进阶3(C++STL 关联式容器,set/map的介绍与使用)
  • VScode 中文符号出现黄色方框的解决方法
  • 【谷粒商城踩坑记】第二坑 renren-fast-vue的node-sass问题
  • golang进阶知识专项-理解值传递
  • ESLint 深度解析:原理、规则与插件开发实践
  • 若依分页的逻辑分析
  • 【论文阅读】多模态——PointCLIP
  • 私有云基础架构与运维(一)
  • 宝塔 Linux 计划任务中添加运行项目网站PHP任务-定时任务
  • OpenAI Deep Research
  • 【Spring Boot 接入 MongoDB】
  • AUTOSAR—TM模块介绍及使用概要
  • django中视图作用和视图功能 以及用法
  • AI摄像头行为识别技术解析