Skip to content

Commit 319e462

Browse files
committed
Use new Jetty CompressionHandler
Prior to this commit, our Jetty support for compression was using the `GzipHandler` which is deprecated as of Jetty 12.1. This commit adds two new dependencies to the module and uses the new `CompressionHandler` with the `GzipCompression` algorithm. Closes gh-47134
1 parent aa06ab1 commit 319e462

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

module/spring-boot-jetty/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ dependencies {
2929
api("org.eclipse.jetty.ee11:jetty-ee11-servlets")
3030
api("org.eclipse.jetty.ee11:jetty-ee11-webapp")
3131

32+
implementation("org.eclipse.jetty.compression:jetty-compression-server")
33+
implementation("org.eclipse.jetty.compression:jetty-compression-gzip")
34+
3235
optional(project(":core:spring-boot-autoconfigure"))
3336
optional(project(":module:spring-boot-actuator-autoconfigure"))
3437
optional(project(":module:spring-boot-micrometer-metrics"))

module/spring-boot-jetty/src/main/java/org/springframework/boot/jetty/JettyHandlerWrappers.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,13 @@
1616

1717
package org.springframework.boot.jetty;
1818

19+
import org.eclipse.jetty.compression.gzip.GzipCompression;
20+
import org.eclipse.jetty.compression.server.CompressionConfig;
21+
import org.eclipse.jetty.compression.server.CompressionConfig.Builder;
22+
import org.eclipse.jetty.compression.server.CompressionHandler;
1923
import org.eclipse.jetty.http.HttpFields.Mutable;
2024
import org.eclipse.jetty.http.HttpMethod;
25+
import org.eclipse.jetty.http.pathmap.PathSpec;
2126
import org.eclipse.jetty.server.Handler;
2227
import org.eclipse.jetty.server.Request;
2328
import org.eclipse.jetty.server.Response;
@@ -35,15 +40,20 @@ final class JettyHandlerWrappers {
3540
private JettyHandlerWrappers() {
3641
}
3742

38-
@SuppressWarnings({ "deprecation", "removal" })
3943
static Handler.Wrapper createGzipHandlerWrapper(Compression compression) {
40-
org.eclipse.jetty.server.handler.gzip.GzipHandler handler = new org.eclipse.jetty.server.handler.gzip.GzipHandler();
41-
handler.setMinGzipSize((int) compression.getMinResponseSize().toBytes());
42-
handler.setIncludedMimeTypes(compression.getMimeTypes());
44+
CompressionHandler compressionHandler = new CompressionHandler();
45+
GzipCompression gzip = new GzipCompression();
46+
gzip.setMinCompressSize((int) compression.getMinResponseSize().toBytes());
47+
compressionHandler.putCompression(gzip);
48+
Builder configBuilder = CompressionConfig.builder();
49+
for (String mimeType : compression.getMimeTypes()) {
50+
configBuilder.compressIncludeMimeType(mimeType);
51+
}
4352
for (HttpMethod httpMethod : HttpMethod.values()) {
44-
handler.addIncludedMethods(httpMethod.name());
53+
configBuilder.compressIncludeMethod(httpMethod.name());
4554
}
46-
return handler;
55+
compressionHandler.putConfiguration(PathSpec.from("/"), configBuilder.build());
56+
return compressionHandler;
4757
}
4858

4959
static Handler.Wrapper createServerHeaderHandlerWrapper(String header) {

0 commit comments

Comments
 (0)