Spring Reactor中Mono返回empty的含义是什么?
关于Spring Reactor中Mono返回Empty的解释
什么是“完成但未发出任何元素”
这是Reactor里Mono流的一种正常终止状态:Mono作为只能发布0个或1个元素的流,完整走完了生命周期——既没有抛出错误(不触发onError()),也没有向订阅者发送任何数据元素(不触发onNext()),最终只发送了onComplete()完成信号,这种状态就会被标记为empty。
它和“从未发送请求”完全是两回事
empty状态不代表没执行请求或逻辑,常见场景包括:
- 外部调用/数据库查询已执行,但没有匹配结果:比如调用接口返回空响应、数据库查不到符合条件的数据,这时候Mono会正常完成但无元素输出。
- 主动构建空流:比如直接使用
Mono.empty()创建一个不携带任何元素就完成的流,这种情况和外部请求无关,是业务逻辑上的空结果定义。 - 本地处理后无有效元素:比如对Mono做
filter、map等操作后,没有符合条件的元素产生,流最终以empty状态完成。
简单说:empty是“做了,但没拿到/产出数据”,而“从未发送请求”是“根本没做”,两者完全不同。
内容的提问来源于stack exchange,提问作者YuhSunMan
相关产品推荐
相关产品推荐

