gpt4 book ai didi

Spring 5 WebFlux Mono 和 Flux

转载 作者:行者123 更新时间:2023-12-04 09:38:47 25 4
gpt4 key购买 nike

在 Spring 5 中,我只知道 Spring WebFlux Handler 方法处理请求并返回 单声道 助焊剂 作为回应。

@Component
public class HelloWorldHandler {
public Mono<ServerResponse> helloWorld(ServerRequest request) {
return ServerResponse.ok().contentType(MediaType.TEXT_PLAIN).body(BodyInserters.fromObject("Hello World"));
}
}

但我不知道是什么意思 单声道 助焊剂 以及它如何与 WebFlux 处理程序一起工作。

谁能简单解释一下

1.是什么意思 单声道 助焊剂 .

2.如何使用 WebFlux 处理程序 .

提前致谢。

最佳答案

Webflux 是关于响应式(Reactive)编程的,总而言之,这意味着业务逻辑仅在要处理的数据可用(响应式(Reactive))时才执行。

这意味着您不再可以返回简单的 POJO,但您必须返回其他内容,即可以在可用时提供结果的内容。内reactive streams倡议,这叫做 Publisher . Publisher有一个 subcribe()允许消费者在可用时获取 POJO 的方法。
Publisher (例如 Publisher<Foo> )可以返回零个或多个,可能是无限个结果。为了更清楚地说明您可以期待多少结果,Project Reactor (Pivotal 的 react 流实现)介绍了 Publisher 的两个实现:

  • Mono ,这将在发出单个结果后完成。
  • Flux ,它将发出零个或多个,可能是无限的结果,然后完成。

  • 所以,基本上你可以看到 Mono<Foo>作为返回 Foo 的 react 对应物和 Flux<Foo>作为 Collection<Foo> 的 react 对应物.

    例如:

    Flux
    .just(1, 2, 3, 4)
    .map(nr -> nr * 2)
    .subscribe(System.out::println);

    即使数字已经可用(您可以看到它们),您也应该意识到,因为它是 Flux ,它们一一发出。在其他情况下,这些数字可能来自外部 API,在这种情况下,它们不会立即可用。
    下一阶段( map 运算符),一旦检索到一个数字就会乘以这个数字,这意味着它也会一个一个地进行映射,然后发出新值。

    最终,有一个订阅者(应该总是有一个,但订阅者可能是 Spring 框架本身),在这种情况下,它将打印它获得的每个值并将其打印到控制台,也一个一个。

    您还应该意识到在处理这些项目时没有特定的顺序。可能是控制台上已经打印了第一个数字,而第三个项目尚未乘以 2。

    因此,就您而言,您有一个 Mono<ServerResponse> ,这意味着只要 ServerResponse可用,WebFlux 框架可以利用它。由于只有一个 ServerResponse预计,这是一个 Mono而不是 Flux .

    关于Spring 5 WebFlux Mono 和 Flux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51160076/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com