响应式库

spring-webflux 依赖于 reactor-core 并内部使用它来组合异步逻辑和提供 Reactive Streams 支持。通常,WebFlux API 返回 FluxMono(因为它们在内部使用)并宽松地接受任何 Reactive Streams Publisher 实现作为输入。当提供一个 Publisher 时,它只能被视为语义未知(0..N)的流。但是,如果语义已知,你应该使用 FluxMono.from(Publisher) 包装它,而不是传递原始的 Publisher。使用 Flux 对比 Mono 很重要,因为它有助于表达基数——例如,是预期单个还是多个异步值,这对于做出决策至关重要(例如,在编码或解码 HTTP 消息时)。

对于基于注解的控制器,WebFlux 透明地适应应用选择的响应式库。这是借助 ReactiveAdapterRegistry 完成的,它为响应式库和其他异步类型提供可插拔的支持。该注册表内置支持 RxJava 3、Kotlin 协程和 SmallRye Mutiny,但你也可以注册其他的。