Spring Boot 4.x
Recipes for migrating to Spring Boot 4.
Composite Recipes
Recipes that include further recipes, often including the individual recipes below.
- Add Jackson2 for Jersey using JSON
- Add MongoDB representation properties for UUID and BigDecimal
- Add Spring Boot 4.0 modular starter dependencies
- Add Spring Boot 4.0 modular starters
- Add Spring Boot 4.1 gRPC starters to modules using Spring gRPC
- Add
spring-boot-starter-data-mongodb-reactive-testfor reactive MongoDB tests - Add
spring-boot-starter-data-mongodb-testfor imperative MongoDB tests - Add
spring-boot-starter-validationdependency - Adopt Jackson 3
- Co-exclude
UserDetailsServiceAutoConfigurationwhereSecurityAutoConfigurationis excluded - Comment out deprecated DevTools LiveReload properties
- Migrate MockMvc to AssertJ assertions
- Migrate
PropertyMapperAPI for Spring Boot 4.0 - Migrate Spring Boot properties to 4.0
- Migrate Spring Boot properties to 4.1 (Moderne Edition)
- Migrate Spring Boot properties to 4.1 (Community Edition)
- Migrate Spring Boot properties to 4.2
- Migrate Spring Cloud AWS (awspring) to 4.0
- Migrate Spring Retry to Spring Resilience
- Migrate Spring Session Hazelcast to Hazelcast Spring Session
- Migrate from standalone Spring gRPC 1.0 to Spring Boot 4.1 (Spring gRPC 1.1)
- Migrate imperative spring-retry usage to Spring Framework 7
- Migrate packages to modular starters
- Migrate to Spring Boot 4.0 (Moderne Edition)
- Migrate to Spring Boot 4.0 (Community Edition)
- Migrate to Spring Boot 4.0 modular starters (Moderne Edition)
- Migrate to Spring Boot 4.0 modular starters (Community Edition)
- Migrate to Spring Boot 4.1
- Migrate to Spring Boot 4.1 modular starters
- Migrate to Spring Boot 4.2
- Migrate to Spring HATEOAS 3.0
- Migrate to Spring Kafka 4.0
- Migrate to Spring Kafka 4.1
- Migrate to Spring for GraphQL 2.0
- Modularize legacy raw Spring Data Redis dependency
- Module has monolithic Spring Boot starter
- Module uses Flyway
- Module uses Liquibase
- Module uses Spring gRPC
- Relocate Spring Boot web server classes to their Spring Boot 4.0 packages
- Remove Spring Pulsar Reactive support
- Remove
SslBundlesparameter fromKafkaPropertiesbuild methods - Remove the orphaned Spring Retry version pin
- Rename Spring Boot 4.0 starters with managed versions
- Replace
@MockBeanand@SpyBean - Replace deprecated RequestMatcherProvider with new API
- Split the Spring gRPC test starter into server-test and client-test starters
- Split the combined Spring gRPC starter into server and client starters
- Spring Boot 4.0 Module Starter Relocations
- Spring Boot 4.0 best practices
- Spring Boot 4.1 type relocations
- Upgrade MyBatis to Spring Boot 4.0
Recipes
- Add
@AutoConfigureMockMvcif necessary (Community Edition) - Add
@AutoConfigureMockMvcto@SpringBootTestclasses usingMockMvc(Moderne Edition) - Add
@AutoConfigureTestRestTemplateif necessary - Add
@AutoConfigureWebTestClientif necessary - Add
@MockitoSettings(strictness = Strictness.LENIENT)for@MockitoBeantests - Add Flyway starters
- Add Liquibase starters
- Add explicit version for REST Assured
- Add
spring-boot-starter-flywayif using Flyway - Add the Spring Boot 4 modules of the referenced Spring Boot types
- Add
useDefaultJaasConfig=trueto MSSQL Kerberos JDBC URLs - Co-exclude
UserDetailsServiceAutoConfigurationinspring.autoconfigure.exclude - Co-exclude
UserDetailsServiceAutoConfigurationon auto-configuration exclusion annotations - Expand split
spring.autoconfigure.excludeentries for Spring Boot 4.0 - Find
MockMvcusages that can all migrate toMockMvcTester - Find Spring Boot repositories
- Flag deprecated ReactorNettyHttpClientMapper for migration
- Flag gRPC client stub injections that need
@ImportGrpcClients - Inline
maxAttemptsExpressionconstants ahead of the Spring Framework 7 migration - Manage Spring Boot directly when a third-party BOM manages an older version
- Migrate
@AutoConfigureMockMvcHtmlUnit attributes to nested@HtmlUnit - Migrate
@Retryable(recover=...)+@Recoverto programmaticRetryTemplate - Migrate
JsonFactoryDecoratortoTokenStreamFactoryBuilderDecorator - Migrate Liquibase property values passed to SpringLiquibase
- Migrate MockMvc
andExpect()chains to AssertJ assertions - Migrate
MockMvctoMockMvcTester - Migrate
MockMvcRequestBuilderstoMockMvcTesterrequest methods - Migrate OpenAPI Generator
springconfiguration to Spring Boot 4 - Migrate Spring Cloud Azure to 7.x
- Migrate Spring gRPC client channel properties to 1.1
- Migrate a Spring Boot 3
jackson-bom.versionoverride tojackson-2-bom.version - Migrate awspring SQS default converter
setObjectMapperto constructor injection - Migrate jsonschema2pojo configuration to Spring Boot 4
- Migrate
layertoolsjarmode totools - Migrate remaining spring-retry usages to a generated compatibility class
- Migrate spring-retry
RetryTemplateconfiguration to Spring Framework 7RetryPolicy.builder() - Migrate
spring-retryto Spring Framework resilience - Preserve
PropertyMappernull-passing behavior - Preserve Reactor HTTP client defaults when upgrading to Spring Boot 4.1
- Preserve Reactor HTTP client defaults when upgrading to Spring Boot 4.1
- Read servlet web server factory settings through
getSettings() - Remove
@Beanmethods for modules built-in to Jackson 3 - Remove
ContentNegotiationConfigurer.favorPathExtension()calls - Remove
HttpMessageConvertersAutoConfigurationreferences - Remove
ZipkinAutoConfiguration - Remove
loaderImplementationfrom Gradle - Remove spring-retry once nothing references it
- Replace deprecated
DockerApi - Replace deprecated
ThreadPoolTaskSchedulerBuilderconstructor - Replace deprecated
org.springframework.boot.autoconfigure.mongoAPI - Replace removed
RedisCacheConfiguration.getTtl() - Simplify null checks on
Optional@ConfigurationPropertiesparameters - Split
spring.grpc.server.addressintoaddressandport - Unwrap
@MockBeansand@SpyBeanscontainer annotations - Upgrade to Java 21 when using jOOQ