From ce9dc19a3c6a870509105c5cedae1cd59b93917d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Mon, 4 Mar 2024 13:24:50 +0100 Subject: [PATCH] Optimize content type parsing This commit avoids calling HttpHeaders#getContentType multiple times in ServletServerHttpResponse#writeHeaders. Closes gh-32361 --- .../http/server/ServletServerHttpResponse.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/server/ServletServerHttpResponse.java b/spring-web/src/main/java/org/springframework/http/server/ServletServerHttpResponse.java index ca28b8e0580..7ec872f05bc 100644 --- a/spring-web/src/main/java/org/springframework/http/server/ServletServerHttpResponse.java +++ b/spring-web/src/main/java/org/springframework/http/server/ServletServerHttpResponse.java @@ -27,6 +27,7 @@ import jakarta.servlet.http.HttpServletResponse; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatusCode; +import org.springframework.http.MediaType; import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; @@ -118,12 +119,13 @@ public class ServletServerHttpResponse implements ServerHttpResponse { } }); // HttpServletResponse exposes some headers as properties: we should include those if not already present - if (this.servletResponse.getContentType() == null && this.headers.getContentType() != null) { - this.servletResponse.setContentType(this.headers.getContentType().toString()); + MediaType contentTypeHeader = this.headers.getContentType(); + if (this.servletResponse.getContentType() == null && contentTypeHeader != null) { + this.servletResponse.setContentType(contentTypeHeader.toString()); } - if (this.servletResponse.getCharacterEncoding() == null && this.headers.getContentType() != null && - this.headers.getContentType().getCharset() != null) { - this.servletResponse.setCharacterEncoding(this.headers.getContentType().getCharset().name()); + if (this.servletResponse.getCharacterEncoding() == null && contentTypeHeader != null && + contentTypeHeader.getCharset() != null) { + this.servletResponse.setCharacterEncoding(contentTypeHeader.getCharset().name()); } long contentLength = getHeaders().getContentLength(); if (contentLength != -1) {