Skip to content

chore(backend): migrate to Spring Boot 3.5 - #549

Merged
JuliusHenke merged 2 commits into
masterfrom
chore/spring-boot-3.5
Oct 8, 2026
Merged

JuliusHenke merged 2 commits into
masterfrom
chore/spring-boot-3.5

Conversation

@JuliusHenke

Copy link
Copy Markdown
Member

Increment B7c: Spring Boot 2.7.18 → 3.5.16 (Spring 6.2, Security 6.5, Hibernate 6.6, Tomcat 10.1, Logback 1.5). Closes the open Tomcat/Spring/Security CVEs of the EOL 2.7 line; the interim version overrides are removed.

Two commits:

  1. Boot 3.5, javax→jakarta, Hibernate 6, Logback 1.5, Flyway/SLF4J now Boot-managed, Ehcache 3.12.0 (jakarta classifier). The first commit alone does not compile, review them together.
  2. springdoc 2.8.17 (springdoc-openapi-starter-webmvc-ui), Security 6 header lambdas, httptrace → httpexchanges, New Relic via io.micrometer:micrometer-registry-otlp (replaces micrometer-registry-new-relic and NewRelicConfig.kt).

Notable details

  • Schema validation (ddl-auto: validate), HQL, the native query and id generation (B7a) all pass on Hibernate 6 without mapping changes.
  • Test fixture fix: RelayDetailsRepositoryTest reused entities across tests; Hibernate 6 refuses to merge a detached entity whose row was deleted. Fresh instances per test.
  • Logback 1.5: SizeAndTimeBasedRollingPolicy replaces SizeAndTimeBasedFNATP; %C{1.} → %C{1}; console appender uses an encoder.
  • slf4j-api is now the Boot-managed 2.x (Logback 1.5 requires it).
  • Removed database-platform (Hibernate 6 auto-detects).
  • OTLP export is only enabled when NEW_RELIC_INGEST_KEY is set (tests cover both cases). Meter filters (plz_ignore_me, jvm.threads) are kept.

Deployment notes

  • New Relic: metrics now go via OTLP to https://otlp.eu01.nr-data.net:4318/v1/metrics (EU region, delta temporality, api-key header). Same env var NEW_RELIC_INGEST_KEY. Not verified against a real account: check that metrics (e.g. jvm.memory.used) arrive and that dashboards/alerts still match; names may differ slightly (resource attribute host.name instead of host).
  • Actuator: httptrace endpoint is now httpexchanges.
  • Trailing slashes are no longer matched by Spring 6 (/relay/location/days/ → 404). The frontend does not use them.
  • Take a DB backup before the first start; keep the previous image tag for rollback.
  • Flyway 11.20 logs a warning that PostgreSQL 18 is newer than its tested version (17); migrations work.

Verification: ./gradlew test on JDK 17: 71 tests, 0 failures. spring-boot-properties-migrator reported no renamed properties (removed again). Not done: running the built image and a real New Relic export.

🤖 Generated with Claude Code

JuliusHenke and others added 2 commits October 8, 2026 10:51
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…t to Boot 3 equivalents

- springdoc 2.8, Security 6 header lambdas
- New Relic metrics via Micrometer OTLP (replaces the 2022 registry)
- httptrace -> httpexchanges

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@JuliusHenke JuliusHenke added backend breaking Incompatible API or behavior change deployment Operators must take action when deploying security Fixes a vulnerability labels Oct 8, 2026
@JuliusHenke
JuliusHenke merged commit 389812b into master Oct 8, 2026
6 checks passed
@JuliusHenke
JuliusHenke deleted the chore/spring-boot-3.5 branch October 8, 2026 09:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend breaking Incompatible API or behavior change deployment Operators must take action when deploying security Fixes a vulnerability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant