In late November 2025 Spring Boot 4 was released, built on the new Spring Framework 7. There are a number of API, starter packaging changes and a major api change for JSON parsing to use Jackson 3. Also Amazon Web Services SDK 1 reached end of life so we updated all utilities to use SDK 2. JUnit 4 dependencies were also removed so any older tests were update to JUnit 5 and JAssert.
We left our JVM at 21 and made the 25 upgrade a separate activity.
Our changes to make version 16 compatible with Spring Boot 4 included:
1. Version and Dependency Management
- Major Version Bump: The project version was upgraded from
15.xto16.x to reflect major changes. - Spring Boot 4 Alignment: Updated parent POMs and library dependencies to align with Spring Boot 4 standards.
- Dependency Cleanup:
- Removed JUnit 4 dependencies in favor of JUnit 5.
- Switched from
spring-boot-starter-jsontospring-boot-starter-jackson. - Completely excluded
commons-loggingto prevent it from “sneaking in” via other starters (e.g.,spring-boot-test-starter).
- Plugin Updates: Updated several Maven plugins, including
versions-maven-plugin(to2.20.1) and JaCoCo configurations to ensure compatibility with the new environment.
2. Jackson 3 Migration
- Namespace Shift: Migrated from the traditional
com.fasterxml.jacksonnamespace to the newtools.jacksonnamespace. - JsonLoader Refactoring: Updated
JsonLoaderto useJsonMapperinstead ofObjectMapper. - New Configuration API:
- Introduced
JsonMapperPrototypeto provide a standardized way to build “boot-like” mappers. - Added
LimeJacksonJsonConfigurationwhich provides a@ConditionalOnMissingBeanfallback forJsonMapper.
- Introduced
- Behavioral Adjustments: Disabled
FAIL_ON_NULL_FOR_PRIMITIVESby default to maintain “sane” behavior across the library’s typical use cases.
3. Testing and Validation Enhancements
- New Validation Support: Introduced
ValidationSupportandValidationSupportConfigurationintest-utilities. This provides a fluent API (hardValidate) for asserting that DTOs and Beans satisfy Jakarta Bean Validation constraints (e.g.,@NotNull) during tests. - Test Refactoring: Factorized validation logic and cleaned up various unit tests to match the new library versions.
4. Infrastructure and Docker
- LocalStack Reliability: Updated
docker-compose.ymlacross multiple modules to fix timing failures during CI/CD.- Increased
start_periodfor health checks from1sto30s. - Enhanced health check commands to verify multiple services (
sqs,s3,sns) as they are started lazily in LocalStack. - Configured additional port ranges for LocalStack services.
- Increased
5. External API Updates (GitHub)
- GitHub API Migration: Updated the
jcabi-githubimplementation ingithub-utilities.- Renamed usages of
Github/RtGithubtoGitHub/RtGitHubto match library changes. - Migrated from
javax.jsontojakarta.jsonnamespaces for JSON processing within the GitHub integration.
- Renamed usages of
- Application Cleanup: Removed unused properties (like
workflowRepositoryId) and added@SuppressWarningsfor specific linting rules.
6. General Cleanup
- Suppressed Javadoc missing warnings.
- Removed unnecessary comments and usage of “ant export properties” in build configurations.
- Corrected various Docker startup and timing issues that were causing flaky tests.

