我最近开始使用响应流开发Spring Webflux应用程序。我有两个问题。
什么是虚空和monovoid>
我有一个像下面这样的用例,我认为可以改进使用void或monod;
@Service
public class ABCService {
public Mono<String> getGreeting(String name) {
Mono.just(NameValidator.validate(name))
.map(isValid -> "Hello, "+name+". Welcome!");
}
}
public class NameValidator {
public static boolean validate(String name) {
if(StringUtils.isEmpty(name)) {throw new RuntimeException("Invalid name");}
return true;
}
}
我实际上不需要validate()方法有一个布尔返回类型。它可以是void/ monod;代替。我只返回true在ABCService中执行链接。有人能解释一下如何使用void和monodvoid>
###如果你返回Mono你不能使用map()
. I mean you can use it but since Mono<Void>
will never emit a value but only 将永远不会发出一个值,但只有一个完成信号你map()
will never take effect. You would need to replace it with 永远不会生效。你需要用then()
:
@Service
public class ABCService {
public Mono<String> getGreeting(String name) {
NameValidator.validate(name)
.then(Mono.just("Hello, "+name+". Welcome!"));
}
}