카테고리 없음

스프링 리액터 doOnNext, 실행되고 있습니까?

기록만이살길 2021. 2. 21. 21:12
반응형

스프링 리액터 doOnNext, 실행되고 있습니까?

1. 질문(문제점):

나는 원자로를 가지고 놀았다

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 전에 validate가 호출되는지 확실하지 않습니다.

내가 잘못 ?

2. 해결방안:

Flux.doOnNext 메서드는 항상 부작용으로 사용해야합니다.

문서에는 "Flux가 항목을 방출 할 때 트리거되는 동작 추가 (부작용)"가 있습니다. 참조 : https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#doOnNext-java.util.function.Consumer-

유효성 검사가 성공한 경우에만 체인을 다시 시작한다고 가정합니다. 즉, 유효성 검사가 성공한 .flatMap(this::findXXXXSse)경우에만 호출해야합니다.

true / false를 반환 filter(this::validate)하는 validate(XXXXSearch.class)메서드를 사용 하고 추가 할 수 있습니다 .

65885933
반응형