Spring 如何从MONO/FLUX中提取字符串值-
我是反应堆编程新手,需要MONO/Flux方面的帮助 我有POJO课 Employee.javaSpring 如何从MONO/FLUX中提取字符串值-,spring,spring-webflux,Spring,Spring Webflux,我是反应堆编程新手,需要MONO/Flux方面的帮助 我有POJO课 Employee.java class Employee { String name } 我在点击服务时返回Mono,我需要从Mono中提取名称作为字符串 Mono<Employee> m = m.map(value -> value.getName()) Mono m=m.map(value->value.getName()) 但这会再次返回一个Mono,而不是字符串。我需要从这个Mono中提
class Employee {
String name
}
我在点击服务时返回Mono,我需要从Mono中提取名称作为字符串
Mono<Employee> m = m.map(value -> value.getName())
Mono m=m.map(value->value.getName())
但这会再次返回一个Mono,而不是字符串。我需要从这个Mono中提取字符串值。您应该这样做:
m.block().getName();
Mono.just(new Employee().setName("Kill"))
.switchIfEmpty(Mono.defer(() -> Mono.just(new Employee("Bill"))))
.block()
.getName();
此解决方案不考虑空检查
标准做法是:
Employee e = m.block();
if (null != e) {
e.getName();
}
但使用flux时,您应该继续使用以下内容:
m.block().getName();
Mono.just(new Employee().setName("Kill"))
.switchIfEmpty(Mono.defer(() -> Mono.just(new Employee("Bill"))))
.block()
.getName();
请记住,如果可能,应避免请求阻塞操作:它会阻塞流您应该避免
block()
,因为它将无限期阻塞,直到收到下一个信号为止
您不应该认为反应容器是为您的程序提供答案的东西。相反,你需要给它任何你想做的答案。例如:
employeeMono.subscribe(value -> whatYouWantToDoWithName(value.getName()));
要从mono中检索对象,必须阻止ref: