响应式库
spring-webflux 依赖于 reactor-core,并在内部使用它来组合异步逻辑并提供响应式流支持。通常,WebFlux API 返回 Flux 或 Mono(因为它们在内部被使用),并且宽松地接受任何响应式流 Publisher 实现作为输入。
当提供一个 Publisher 时,只能将其视为具有未知语义的流(0..N)。然而,如果语义是已知的,则应使用 Flux 或 Mono.from(Publisher) 将其包装,而不是传递原始的 Publisher。
使用 Flux 还是 Mono 非常重要,因为它有助于表达基数——例如,是期望单个还是多个异步值,这可能对于做出决策至关重要(例如,在编码或解码 HTTP 消息时)。
对于带注解的控制器,WebFlux 会透明地适配应用程序所选择的响应式库。这是通过
ReactiveAdapterRegistry 实现的,
它为响应式库和其他异步类型提供了可插拔的支持。该注册表内置支持 RxJava 3、Kotlin 协程和 SmallRye Mutiny,但您也可以注册其他类型。