From a37447e07fec1170ea18d5683b7f7676111aaa0f Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Tue, 24 Feb 2026 16:49:37 +0100 Subject: [PATCH] Remove duplicate flushes in HttpMessageConverter implementations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prior to this commit, a few implementations of the `HttpMessageConverter` contract were inheriting from abstract classes. Those classes were performing extra `OutputStream#flush` on the response body even though this is the responsibility of the super class. Such abstract classes do flush already, after delegating to the `writeInternal` method. This commit ensures that we remove such extra calls as they tend to waste resources for no added benefit. Closes gh-36383 --- .../http/converter/ByteArrayHttpMessageConverter.java | 3 +-- .../KotlinSerializationBinaryHttpMessageConverter.java | 1 - .../KotlinSerializationStringHttpMessageConverter.java | 1 - .../http/converter/ResourceHttpMessageConverter.java | 1 - .../http/converter/protobuf/ProtobufHttpMessageConverter.java | 2 -- 5 files changed, 1 insertion(+), 7 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/converter/ByteArrayHttpMessageConverter.java b/spring-web/src/main/java/org/springframework/http/converter/ByteArrayHttpMessageConverter.java index a2c607d1bef..b924827739e 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/ByteArrayHttpMessageConverter.java +++ b/spring-web/src/main/java/org/springframework/http/converter/ByteArrayHttpMessageConverter.java @@ -23,7 +23,6 @@ import org.jspecify.annotations.Nullable; import org.springframework.http.HttpInputMessage; import org.springframework.http.HttpOutputMessage; import org.springframework.http.MediaType; -import org.springframework.util.StreamUtils; /** * Implementation of {@link HttpMessageConverter} that can read and write byte arrays. @@ -65,7 +64,7 @@ public class ByteArrayHttpMessageConverter extends AbstractHttpMessageConverter< @Override protected void writeInternal(byte[] bytes, HttpOutputMessage outputMessage) throws IOException { - StreamUtils.copy(bytes, outputMessage.getBody()); + outputMessage.getBody().write(bytes); } @Override diff --git a/spring-web/src/main/java/org/springframework/http/converter/KotlinSerializationBinaryHttpMessageConverter.java b/spring-web/src/main/java/org/springframework/http/converter/KotlinSerializationBinaryHttpMessageConverter.java index 3b564d17232..35b3e81dc48 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/KotlinSerializationBinaryHttpMessageConverter.java +++ b/spring-web/src/main/java/org/springframework/http/converter/KotlinSerializationBinaryHttpMessageConverter.java @@ -91,7 +91,6 @@ public abstract class KotlinSerializationBinaryHttpMessageConverter