diff --git a/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java b/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java index 228f6853ec..e8058691db 100644 --- a/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java +++ b/spring-web/src/main/java/org/springframework/http/codec/EncoderHttpMessageWriter.java @@ -131,8 +131,13 @@ public class EncoderHttpMessageWriter implements HttpMessageWriter { }); } - return (isStreamingMediaType(contentType) ? - message.writeAndFlushWith(body.map(Flux::just)) : message.writeWith(body)); + if (isStreamingMediaType(contentType)) { + return message.writeAndFlushWith(body.map(buffer -> + Mono.fromCallable(() -> buffer) + .doOnDiscard(PooledDataBuffer.class, PooledDataBuffer::release))); + } + + return message.writeWith(body); } @Nullable