WebFlux使用

使用文档请看 https://blog.51cto.com/morris131/6216398 个人觉得已经写得很清楚了。本文主要补充几个关键性概念:
1、Mono 是 Reactor 框架中的一个类,用于表示包含零个或一个元素的异步序列。它是 RxJava 的 Mono 类的 Reactor 版本。

在 Reactor 中,Mono 是一种实现了 Reactive Streams 规范的发布者(Publisher),它可以发送一个或零个元素,并提供了丰富的操作符来处理异步流。

以下是一些常见的 Mono 操作:

  • subscribe(): 订阅 Mono,触发数据流的发布和处理。
  • map(Function): 对 Mono 中的元素进行映射操作,返回一个新的 Mono。
  • flatMap(Function): 对 Mono 中的元素进行转换操作,并返回新的 Mono 或 Publisher。
  • filter(Predicate): 根据条件过滤 Mono 中的元素。
  • defaultIfEmpty(T): 如果 Mono 中没有元素,则提供默认值。
  • switchIfEmpty(Mono): 如果 Mono 中没有元素,则切换到另一个 Mono。
  • onErrorReturn(T): 当出现错误时,提供一个默认值。

下面是一个简单的示例来说明 Mono 的使用:

import reactor.core.publisher.Mono;

public class MonoExample {

    public static void main(String[] args) {
        Mono<Integer> mono = Mono.just(42);

        mono.map(n -> n * 2)
                .subscribe(result -> System.out.println("Result: " + result));
    }
}

在上述示例中,我们创建了一个 Mono 对象,并使用 .just() 方法传入一个整数值 42。然后,我们使用 map() 操作符将元素映射为原始值的两倍。最后,我们使用 subscribe() 方法订阅 Mono 并处理结果。在这种情况下,我们简单地打印出结果。

当我们运行这段代码时,将输出 “Result: 84”,这是原始值 42 的两倍。

总的来说,Mono 是 Reactor 框架中用于表示包含零个或一个元素的异步序列的类。它提供了丰富的操作符来处理异步流,并支持响应式编程的特性。

2、Flux 是 Reactor 框架中的一个类,用于表示包含零个或多个元素的异步序列。它是 Reactive Streams 规范的发布者(Publisher)实现,并提供了丰富的操作符来处理异步流。

Flux 类似于 Mono,但可以发出多个元素而不仅限于单个元素。它可以用于处理集合、事件流、数据库查询结果等等。

以下是一些常见的 Flux 操作:

  • subscribe(): 订阅 Flux,触发数据流的发布和处理。
  • map(Function): 对 Flux 中的每个元素进行映射操作,返回一个新的 Flux。
  • flatMap(Function): 对 Flux 中的每个元素进行转换操作,并返回一个新的 Flux 或 Publisher。
  • filter(Predicate): 根据条件过滤 Flux 中的元素。
  • take(n): 从 Flux 中提取前 n 个元素。
  • mergeWith(Flux): 将两个 Flux 合并为一个 Flux。
  • zipWith(Flux): 将两个 Flux 逐个对应地合并为一个 Flux。

下面是一个简单的示例来说明 Flux 的使用:

import reactor.core.publisher.Flux;

public class FluxExample {

    public static void main(String[] args) {
        Flux<Integer> flux = Flux.just(1, 2, 3, 4, 5);

        flux.map(n -> n * 2)
                .subscribe(result -> System.out.println("Result: " + result));
    }
}

在上述示例中,我们创建了一个 Flux 对象,并使用 .just() 方法传入一些整数值。然后,我们使用 map() 操作符将每个元素映射为原始值的两倍。最后,我们使用 subscribe() 方法订阅 Flux 并处理结果。在这种情况下,我们简单地打印出结果。

当我们运行这段代码时,将输出 “Result: 2”、“Result: 4”、“Result: 6”、“Result: 8”、“Result: 10”,分别对应原始值的两倍。

总的来说,Flux 是 Reactor 框架中表示包含零个或多个元素的异步序列的类。它提供了丰富的操作符来处理异步流,并支持响应式编程的特性。
3、Mono.just() 是 Reactor 框架中的一个静态方法,用于创建一个包含单个元素的 Mono 对象。

Mono.just() 方法接受一个参数作为元素的值,并返回一个包含该元素的 Mono。可以使用该方法来创建一个已预先定义值的 Mono 对象。

下面是一个示例:

import reactor.core.publisher.Mono;

public class MonoExample {

    public static void main(String[] args) {
        Mono<Integer> mono = Mono.just(42);

        mono.subscribe(value -> System.out.println("Value: " + value));
    }
}

在上面的示例中,我们使用 Mono.just() 创建了一个包含整数值 42 的 Mono 对象。然后,我们通过使用 subscribe() 方法来订阅 Mono,并在每次发出元素时打印出它的值。

当我们运行这段代码时,将输出 “Value: 42”,表示我们成功创建了一个包含值 42 的 Mono,并且成功接收到该值。

总之,Mono.just() 是 Reactor 框架中的一个静态方法,用于创建一个包含单个元素的 Mono 对象。它可以用于在响应式编程中提供单个预定义值的异步序列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值