Skip to content

Commit ebf59a5

Browse files
authored
Spring Boot 4 Migration (#303)
1 parent a1cdbdc commit ebf59a5

File tree

21 files changed

+25
-80
lines changed

21 files changed

+25
-80
lines changed

build.gradle

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@ plugins {
33
alias(libs.plugins.nexus.publish)
44
}
55

6-
ext['spring-framework.version'] = '6.2.11'
7-
ext['tomcat.version'] = '11.0.12'
8-
ext['netty.version'] = '4.2.6.Final' // Due to security vulnerabilities in 4.125.Final and older
9-
106
apply from: "${rootDir}/gradle/publish-root.gradle"
117

128
allprojects {
@@ -68,31 +64,6 @@ subprojects {
6864
annotationProcessor(libs.lombok)
6965
testCompileOnly(libs.lombok)
7066
testAnnotationProcessor(libs.lombok)
71-
72-
// Security constraints
73-
constraints {
74-
implementation("org.springframework:spring-web:6.2.12") {
75-
because("versions below 6.2.11 have security vulnerabilities including CVE-2024-38820 and CVE-2025-41249 - see dependabot #12, #24")
76-
}
77-
implementation("org.springframework:spring-webmvc:6.2.12") {
78-
because("versions below 6.2.11 have security vulnerabilities including CVE-2025-41242 and CVE-2025-41249 - see dependabot #24, #247")
79-
}
80-
implementation("org.apache.tomcat.embed:tomcat-embed-core:11.0.14") {
81-
because("versions below 11.0.12 have security vulnerabilities including CVE-2024-56337, CVE-2025-55754, CVE-2025-61795 - see dependabot #13, #27, #28")
82-
}
83-
implementation("org.apache.commons:commons-lang3:3.20.0") {
84-
because("versions below 3.18.0 have security vulnerabilities including CVE-2025-48924 - see dependabot #15")
85-
}
86-
implementation("io.projectreactor.netty:reactor-netty-http:1.3.0") {
87-
because("versions below 1.2.8 have security vulnerabilities including CVE-2025-22227 - see dependabot #16")
88-
}
89-
implementation("io.netty:netty-codec-http2:4.2.7.Final") {
90-
because("versions below 4.1.124.Final have security vulnerabilities including CVE-2025-55163 - see dependabot #17")
91-
}
92-
implementation("io.netty:netty-codec:4.2.7.Final") {
93-
because("versions below 4.1.125.Final have security vulnerabilities including CVE-2025-58057 - see dependabot #21")
94-
}
95-
}
9667
}
9768

9869
checkstyle {

examples/example-spring-boot-starter-web/build.gradle

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,6 @@ plugins {
55
alias(libs.plugins.openapi.generator)
66
}
77

8-
// Needed for security. See:
9-
// - https://github.com/getyourguide/openapi-validation-java/security/dependabot/25
10-
// - https://github.com/getyourguide/openapi-validation-java/security/dependabot/7
11-
// - https://github.com/getyourguide/openapi-validation-java/security/dependabot/6
12-
// Hopefully with spring-boot 3.4.2+ this won't be needed anymore and can be removed.
13-
dependencyManagement {
14-
dependencies {
15-
dependency 'ch.qos.logback:logback-core:1.5.21'
16-
dependency 'ch.qos.logback:logback-classic:1.5.21'
17-
}
18-
}
19-
208
dependencies {
219
implementation project(':examples:examples-common')
2210
implementation project(':spring-boot-starter:spring-boot-starter-web')

examples/example-spring-boot-starter-webflux/build.gradle

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,6 @@ plugins {
55
alias(libs.plugins.openapi.generator)
66
}
77

8-
// Needed for security. See:
9-
// - https://github.com/getyourguide/openapi-validation-java/security/dependabot/25
10-
// - https://github.com/getyourguide/openapi-validation-java/security/dependabot/7
11-
// - https://github.com/getyourguide/openapi-validation-java/security/dependabot/6
12-
// Hopefully with spring-boot 3.4.2+ this won't be needed anymore and can be removed.
13-
dependencyManagement {
14-
dependencies {
15-
dependency 'ch.qos.logback:logback-core:1.5.21'
16-
dependency 'ch.qos.logback:logback-classic:1.5.21'
17-
}
18-
}
19-
208
dependencies {
219
implementation project(':examples:examples-common')
2210
implementation project(':spring-boot-starter:spring-boot-starter-webflux')

examples/example-spring-boot-starter-webflux/src/main/java/com/getyourguide/openapi/validation/example/error/GlobalErrorWebExceptionHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import com.getyourguide.openapi.validation.example.openapi.model.BadRequestResponse;
44
import java.util.Optional;
55
import org.springframework.boot.autoconfigure.web.WebProperties;
6-
import org.springframework.boot.autoconfigure.web.reactive.error.AbstractErrorWebExceptionHandler;
76
import org.springframework.boot.web.error.ErrorAttributeOptions;
8-
import org.springframework.boot.web.reactive.error.ErrorAttributes;
7+
import org.springframework.boot.webflux.autoconfigure.error.AbstractErrorWebExceptionHandler;
8+
import org.springframework.boot.webflux.error.ErrorAttributes;
99
import org.springframework.context.ApplicationContext;
1010
import org.springframework.core.annotation.Order;
1111
import org.springframework.http.HttpStatus;

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[versions]
22
java = "21"
3-
spring-boot = "3.5.7"
3+
spring-boot = "4.0.0"
44
spring-dependency-management = "1.1.7"
55
openapi-generator = "7.17.0"
66
openapi-tools = "0.2.8"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

spring-boot-starter/spring-boot-starter-web/src/main/java/com/getyourguide/openapi/validation/factory/ContentCachingWrapperFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public MultiReadContentCachingRequestWrapper buildContentCachingRequestWrapper(H
1313
return (MultiReadContentCachingRequestWrapper) request;
1414
}
1515

16-
return new MultiReadContentCachingRequestWrapper(request);
16+
return new MultiReadContentCachingRequestWrapper(request, 0 /* no limit */);
1717
}
1818

1919
public ContentCachingResponseWrapper buildContentCachingResponseWrapper(HttpServletResponse response) {

spring-boot-starter/spring-boot-starter-web/src/main/java/com/getyourguide/openapi/validation/filter/MultiReadContentCachingRequestWrapper.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@
1111

1212
public class MultiReadContentCachingRequestWrapper extends ContentCachingRequestWrapper {
1313

14-
public MultiReadContentCachingRequestWrapper(HttpServletRequest request) {
15-
super(request);
16-
}
17-
1814
public MultiReadContentCachingRequestWrapper(HttpServletRequest request, int contentCacheLimit) {
1915
super(request, contentCacheLimit);
2016
}

spring-boot-starter/spring-boot-starter-web/src/test/java/com/getyourguide/openapi/validation/autoconfigure/SpringWebLibraryAutoConfigurationApplicationContextTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import java.util.Optional;
66
import org.junit.jupiter.api.AfterEach;
77
import org.junit.jupiter.api.Test;
8-
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebApplicationContext;
9-
import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebApplicationContext;
8+
import org.springframework.boot.web.context.reactive.AnnotationConfigReactiveWebApplicationContext;
9+
import org.springframework.boot.web.context.servlet.AnnotationConfigServletWebApplicationContext;
1010
import org.springframework.context.ConfigurableApplicationContext;
1111
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
1212
import org.springframework.mock.web.MockServletContext;

spring-boot-starter/spring-boot-starter-web/src/test/java/com/getyourguide/openapi/validation/integration/ExceptionsNoExceptionHandlerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
import org.junit.jupiter.api.Test;
1717
import org.junit.jupiter.api.extension.ExtendWith;
1818
import org.springframework.beans.factory.annotation.Autowired;
19-
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
2019
import org.springframework.boot.test.context.SpringBootTest;
20+
import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc;
2121
import org.springframework.test.context.junit.jupiter.SpringExtension;
2222
import org.springframework.test.web.servlet.MockMvc;
2323

0 commit comments

Comments
 (0)