Spring webflux 中的 void 与 Mono<Void>

void vs Mono<Void> in Spring webflux

我最近开始使用反应流开发 Spring Webflux 应用程序。我有 2 个问题。

  1. voidMono<Void>有什么区别

  2. 我有一个像下面这样的用例,我认为可以使用 voidMono<Void>

    进行改进
     @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() 方法来获得 boolean return 类型。它可能是 void/Mono<Void> 而不是。我只 return true 在 ABCService 中执行链接。有人可以解释如何使用 voidMono<Void>

做同样的事情吗

如果您 return Mono,则无法使用 map()。我的意思是你可以使用它,但由于 Mono<Void> 永远不会发出一个值而只会发出一个完成信号,你的 map() 永远不会生效。您需要将其替换为 then():

@Service
public class ABCService {  
  public Mono<String> getGreeting(String name) {
      NameValidator.validate(name)
         .then(Mono.just("Hello, "+name+". Welcome!"));
  }
}