在spring webflux中处理空响应体,核心做法是将`mono

如何将Mono转换为Optional
将`Mono

import reactor.core.publisher.Mono;
import java.util.Optional;
public class MonoToOptionalExample {
public static void main(String[] args) {
// 模拟一个包含数据的Mono
Mono<string> monoWithData = Mono.just("Hello");
// 模拟一个空的Mono
Mono<string> monoEmpty = Mono.empty();
// 转换为Optional
Optional<string> optWithData = monoWithData.map(data -> data).block();
Optional<string> optEmpty = monoEmpty.map(data -> data).block();
System.out.println("With Data: " + optWithData);
System.out.println("Empty: " + optEmpty);
}
}</string></string></string></string>
预期结果: - `With Data: Optional[Hello]` - `Empty: Optional.empty`
如何处理Optional中的空值情况
在获得`Optional

import reactor.core.publisher.Mono;
import java.util.Optional;
public class HandleOptionalExample {
public static void main(String[] args) {
Mono<string> monoEmpty = Mono.empty();
// 使用orElse提供默认值
String defaultValue = monoEmpty.map(data -> data)
.blockOptional()
.orElse("Default Value");
// 使用ifPresent执行逻辑
monoEmpty.map(data -> data)
.blockOptional()
.ifPresent(data -> System.out.println("Data found: " + data));
System.out.println("Default Value: " + defaultValue);
}
}</string>
预期结果: - `Default Value: Default Value` - (无输出,因为`ifPresent`未执行)
基于程序中某个输入、条件或结果的具体问题
当`Mono`发射多个值时,`map()`只会处理第一个值,后续值会被忽略。如果需要处理所有值,应使用`collectList()`或`collectMap()`等收集操作符,而不是直接转换为`Optional`。此外,如果`Mono`发射的是`null`值,`map()`会抛出`NullPointerException`,因此需要确保`Mono`不会发射`null`。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











