首页 > 解决方案 > 如何从 MONO/FLUX 中提取字符串值 -

问题描述

我是反应堆编程的新手,需要一些关于 MONO/Flux 的帮助

我有 POJO 课

雇员.java

class Employee {
   String name
}

我在访问服务时返回了 Mono,我需要从 Mono 中提取名称作为字符串。

Mono<Employee> m = m.map(value -> value.getName()) 

但这再次返回 Mono 但不是字符串。我需要从这个 Mono 中提取字符串值。

标签: springspring-webflux

解决方案


你应该这样做:

m.block().getName();

此解决方案不负责空值检查。

标准方法是:

Employee e = m.block();
if (null != e) {
   e.getName();
}

但是使用通量你应该继续使用这样的东西:

Mono.just(new Employee().setName("Kill"))
    .switchIfEmpty(Mono.defer(() -> Mono.just(new Employee("Bill"))))
    .block()
    .getName();

请记住,如果可能,应避免请求阻塞操作:它会阻塞流


推荐阅读