Реактор http работает как холодный, запускается только при вызове подписки или блокировки. Хотя на практике говорят, что когда сопоставленный (или flatMapped, значение справа от ->
) результат необходим (или потребляется), он вызывается. Затем я заметил, что log.info("{}", resultOfMap)
недостаточно для его вызова, но function return from resultOfMap
достаточно. Есть ли логическая причина для этого, например "в чем разница между потребителем журнала и потребителем возврата функции с точки зрения реактора" , или мы играем "игра в прятки и эврика? "
public Mono<ServerResponse> postMethod(ServerRequest req) {
req.bodyToMono(T.class)
.map(t -> fromTtoD(t))
.flatMap(d ->
this.webClient
.post()
.uri(serverUri)
.body(BodyInserters.fromObject(d))
.retrieve()
.bodyToMono(E.class))
.map(e -> log e and return e); // no! this would not make webClient called.
.flatMap(e -> ServerResponse.ok().bodyValue(e).build()) // yes! when return this
}