카테고리 없음
스프링 리액터 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