基于响应式栈的 Web
本部分文档涵盖了对基于 Reactive Streams API 的反应式栈 Web 应用程序的支持,这些应用程序可以在非阻塞服务器上运行,例如 Netty、Undertow 和 Servlet 容器。各个章节涵盖了 Spring WebFlux 框架、反应式 WebClient、对 测试 的支持,以及 反应式库。有关 Servlet 栈 Web 应用程序的信息,请参见 Web on Servlet Stack。
章节摘要
🗃️ Spring WebFlux
13 个项目
🗃️ WebClient
9 个项目
📄️ HTTP 接口客户端
Spring 框架允许您将 HTTP 服务定义为具有 HTTP 交换方法的 Java 接口。然后,您可以生成一个实现该接口并执行交换的代理。这有助于简化 HTTP 远程访问,并提供额外的灵活性,以选择 API 风格,例如同步或反应式。
📄️ WebSockets
查看 Servlet 堆栈中的等效项
📄️ 测试
spring-test 模块提供了 ServerHttpRequest、ServerHttpResponse 和 ServerWebExchange 的模拟实现。有关模拟对象的讨论,请参见 Spring Web Reactive。
📄️ RSocket
本节描述了 Spring Framework 对 RSocket 协议的支持。
📄️ 响应式库
spring-webflux 依赖于 reactor-core,并在内部使用它来组合异步逻辑并提供 Reactive Streams 支持。一般来说,WebFlux API 返回 Flux 或 Mono(因为这些在内部使用)并宽松地接受任何 Reactive Streams Publisher 实现作为输入。当提供一个 Publisher 时,它只能被视为一个具有未知语义的流 (0..N)。然而,如果语义是已知的,您应该使用 Flux 或 Mono.from(Publisher) 来包装它,而不是直接传递原始 Publisher。使用 Flux 与 Mono 之间的区别很重要,因为它有助于表达基数 — 例如,是否期望单个或多个异步值,这对于做出决策(例如,在编码或解码 HTTP 消息时)可能是至关重要的。