Spring reactor doOnNext,它被执行了吗?

Spring reactor doOnNext, is it getting executed?

我在玩reactor

public @NotNull Mono<ServerResponse> findXXXXSse(final ServerRequest request) {
    return request.bodyToMono(XXXXSearch.class)
            .doOnNext(this::validate)
            .flatMap(this::findXXXXSse)
            .switchIfEmpty(this.emptyBodyException());
}

Adn 我想知道“.doOnNext(this::validate)”的使用是否正确。从我的角度来看,我不确定在 findXXXXSse 之前调用了验证?

我错了吗?

Flux.doOnNext 方法应始终用作副作用。

文档说“添加行为(副作用)在 Flux 发出项目时触发。”参考:https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#doOnNext-java.util.function.Consumer-

我假设您只想在验证成功时恢复您的链,即,只有在验证成功时才应调用 .flatMap(this::findXXXXSse)

您可以使用 filter(this::validate) 并将 validate(XXXXSearch.class) 方法添加到 return true/false。