Skip to content

feat: upgrade Spring Boot 3.5 → 4.0.6 (Spring 7, Jackson 2.21, GWT 2.13)#3672

Open
luis100 wants to merge 1 commit into
developmentfrom
feature/spring-boot-4-upgrade
Open

feat: upgrade Spring Boot 3.5 → 4.0.6 (Spring 7, Jackson 2.21, GWT 2.13)#3672
luis100 wants to merge 1 commit into
developmentfrom
feature/spring-boot-4-upgrade

Conversation

@luis100

@luis100 luis100 commented Jun 11, 2026

Copy link
Copy Markdown
Member

Summary

Spring Boot 4.0.6 upgrade, bringing Spring Framework 7.0.7, Jackson 2.21.2, and GWT 2.13.0.

Dependency bumps

Library Before After
spring-boot 3.5.14 4.0.6
spring 6.2.18 7.0.7
jackson 2.20.1 2.21.2
gwt 2.12.2 2.13.0
logback 1.5.25 1.5.32
mockito 5.18.0 5.20.0

Removed explicit jakarta.servlet-api, jakarta.persistence-api, and jackson-bom overrides — the Spring Boot 4 BOM manages these correctly.

Import path migrations

Spring Boot 4 reorganised several auto-configuration packages:

  • EntityScan: o.s.boot.autoconfigure.domaino.s.boot.persistence.autoconfigure
  • ServletComponentScan: o.s.boot.web.servleto.s.boot.web.server.servlet.context
  • CookieSameSiteSupplier: o.s.boot.web.servlet.servero.s.boot.web.server.servlet
  • Security auto-config @SpringBootApplication(exclude=...) class refs replaced with excludeName= string literals (class locations changed in Boot 4 module structure)

Pbkdf2PasswordEncoderImpl

Pbkdf2PasswordEncoder is no longer extendable in Spring Security 6.4+. Reimplemented as a direct PasswordEncoder implementation using the same PBKDF2WithHmacSHA512 logic — hash output is identical, existing stored hashes remain valid.

FindRequest

Added public no-arg constructor + setters alongside the existing @JsonDeserialize(builder=...) to satisfy Jackson 2.21 strict deserialization paths. The builder is still used by Jackson 2 via the annotation; the setters are a fallback for paths that bypass it.

Test plan

🤖 Generated with Claude Code

Spring Boot 4.0.6 brings Spring Framework 7.0.7, Jackson 2.21.2, and a
reorganised auto-configuration package structure. Key changes:

Dependency bumps (pom.xml):
- spring-boot: 3.5.14 → 4.0.6
- spring: 6.2.18 → 7.0.7
- jackson: 2.20.1 → 2.21.2
- gwt: 2.12.2 → 2.13.0
- logback: 1.5.25 → 1.5.32
- mockito: 5.18.0 → 5.20.0
- pekko: stays at 1.4.0
- Remove explicit jakarta.servlet-api / jakarta.persistence-api overrides
  (Spring Boot 4 BOM manages these correctly)
- Remove separate jackson-bom import (Spring Boot 4 BOM covers it)

Import path migrations (Spring Boot 4 moved packages):
- EntityScan: o.s.boot.autoconfigure.domain → o.s.boot.persistence.autoconfigure
- ServletComponentScan: o.s.boot.web.servlet → o.s.boot.web.server.servlet.context
- CookieSameSiteSupplier: o.s.boot.web.servlet.server → o.s.boot.web.server.servlet
- Security auto-config excludes switched to excludeName= string literals
  (class refs no longer resolvable at compile time in Boot 4 module structure)

Pbkdf2PasswordEncoderImpl: Pbkdf2PasswordEncoder is no longer extendable in
Spring Security 6.4+; reimplemented to directly implement PasswordEncoder using
the same PBKDF2WithHmacSHA512 logic, preserving hash compatibility.

FindRequest: added public no-arg constructor + setters alongside the existing
@JsonDeserialize(builder=...) to satisfy Jackson 2.21 strict mode when the
builder pattern is not honoured by the deserialization path.

All 233 CI (travis group) integration tests pass. E2E API tests pass (4/4).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@dosubot dosubot Bot added size:L This PR changes 100-499 lines, ignoring generated files. dependencies Pull requests that update a dependency file labels Jun 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant