Is there a compatibility matrix of Spring-boot and Spring-cloud?
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.
Introduction
Yes, there is an official compatibility matrix. Spring Cloud publishes a release train that maps to specific Spring Boot versions, and using mismatched versions is one of the most common sources of cryptic build failures in Spring microservices. This article provides the current matrix, shows you how to check compatibility programmatically, and walks through how to configure your project correctly.
The Official Compatibility Matrix
The canonical source is the Spring Cloud project page, which publishes this mapping. Here is the current matrix:
| Spring Cloud Release Train | Spring Boot Version | Release Date | End of Support |
| 2024.0.x (Moorgate) | 3.4.x | Nov 2024 | Current |
| 2023.0.x (Leyton) | 3.2.x, 3.3.x | Dec 2023 | Nov 2025 |
| 2022.0.x (Kilburn) | 3.0.x, 3.1.x | Dec 2022 | Dec 2024 |
| 2021.0.x (Jubilee) | 2.6.x, 2.7.x | Nov 2021 | Nov 2023 |
| 2020.0.x (Ilford) | 2.4.x, 2.5.x | Dec 2020 | Dec 2022 |
| Hoxton.SR12 | 2.2.x, 2.3.x | Jan 2020 | End of life |
| Greenwich.SR6 | 2.1.x | Jan 2019 | End of life |
Starting with the 2020.0.x release, Spring Cloud switched from London-borough code names (Hoxton, Greenwich) to a calendar-based versioning scheme (YYYY.MINOR.PATCH).
How to Check Compatibility Programmatically
Using start.spring.io API
The Spring Initializr API exposes compatible version combinations:
Using the Spring Cloud BOM
The most reliable way to ensure compatibility is to import the Spring Cloud BOM (Bill of Materials) in your build configuration. The BOM manages all Spring Cloud dependency versions for you.
Configuring Your Project
Maven (pom.xml)
Gradle (build.gradle)
Gradle Kotlin DSL (build.gradle.kts)
What Happens When Versions Are Mismatched
Using incompatible versions leads to failures that can be hard to diagnose. Here are the most common symptoms:
| Symptom | Likely Cause |
NoSuchMethodError at runtime | Spring Cloud compiled against different Spring Boot API |
BeanCreationException during startup | Auto-configuration class expects a bean that does not exist in the Boot version |
ClassNotFoundException | A transitive dependency was removed or relocated between versions |
| Tests pass, app fails in production | Test classpath has different resolved versions than production |
UnsatisfiedDependencyException | Conditional beans from Cloud expect Boot properties that changed names |
Real example: Boot 3.4 with Cloud 2022.0
This happens because Spring Cloud 2022.0 was compiled against Spring Boot 3.0/3.1 APIs, and ServerProperties changed in Boot 3.4. The fix: upgrade to Spring Cloud 2024.0.x.
Upgrading Spring Cloud: Step-by-Step
When upgrading Spring Boot and need to align Spring Cloud:
Step 1: Check the matrix
Identify which Spring Cloud release train matches your target Boot version from the table above.
Step 2: Update the BOM version
Step 3: Check for deprecated modules
Some Spring Cloud modules have been removed or replaced across versions:
| Removed/Changed | Replacement | Since |
| spring-cloud-starter-netflix-hystrix | spring-cloud-starter-circuitbreaker-resilience4j | 2020.0.x |
| spring-cloud-starter-netflix-zuul | spring-cloud-starter-gateway | 2020.0.x |
| spring-cloud-starter-netflix-ribbon | spring-cloud-starter-loadbalancer | 2020.0.x |
| spring-cloud-starter-sleuth | micrometer-tracing (built into Boot 3.x) | 2022.0.x |
| spring-cloud-starter-bootstrap | Explicit dependency (no longer auto-included) | 2020.0.x |
Step 4: Run tests and check for deprecation warnings
Step 5: Check the release notes
Always read the Spring Cloud release notes for breaking changes:
Key Spring Cloud Components and Their Boot Requirements
| Component | Purpose | Minimum Boot Version |
| Spring Cloud Config | Externalized configuration | 3.0.x (for Cloud 2022.0+) |
| Spring Cloud Gateway | API gateway (reactive) | 3.0.x |
| Spring Cloud Netflix (Eureka) | Service discovery | 3.0.x |
| Spring Cloud Circuit Breaker | Resilience4j integration | 3.0.x |
| Spring Cloud OpenFeign | Declarative REST client | 3.0.x |
| Spring Cloud Stream | Event-driven messaging | 3.0.x |
| Spring Cloud Kubernetes | Kubernetes native integration | 3.0.x |
Common Pitfalls
- Hardcoding individual Spring Cloud dependency versions. Always use the BOM to manage versions. If you set
<version>on individual Spring Cloud dependencies, you risk version conflicts between Cloud modules that were designed to work together. - Mixing Spring Cloud modules from different release trains. All Spring Cloud dependencies in a project must come from the same release train. Mixing
spring-cloud-configfrom 2023.0.x withspring-cloud-gatewayfrom 2024.0.x will cause class-loading issues. - Forgetting that Spring Cloud bootstrap is no longer automatic. Since Spring Cloud 2020.0, the bootstrap context (bootstrap.yml) requires an explicit dependency:
spring-cloud-starter-bootstrap. Without it, yourbootstrap.ymlis silently ignored. - Not checking Spring Boot patch version compatibility. While the matrix shows major/minor ranges (e.g., 3.4.x), early patch versions of Spring Boot can occasionally have issues. Use at least the second or third patch release for production.
- Assuming start.spring.io always uses the latest compatible combination. The initializer defaults to the latest stable versions, but it may lag behind the very latest patch releases.
Summary
- The official Spring Cloud compatibility matrix is maintained at spring.io/projects/spring-cloud and maps release trains to Spring Boot versions.
- Always use the Spring Cloud BOM (
spring-cloud-dependencies) to manage versions. Never hardcode individual dependency versions. - The current recommended combination for new projects is Spring Cloud 2024.0.x with Spring Boot 3.4.x.
- When upgrading, check for removed modules (Hystrix, Zuul, Ribbon, Sleuth) and their replacements.
- Mismatched versions typically manifest as
NoSuchMethodError,BeanCreationException, orClassNotFoundExceptionat startup. - Read the release notes for each Spring Cloud release train before upgrading, especially when crossing major Boot version boundaries (2.x to 3.x).
Related reading
- Is there a concise way to iterate over a stream with indices in Java 8?
- Is there a concurrent List in Java's JDK?
- Is there a date format to display the day of the week in java?
- Is there a destructor for Java?
- Is there a goto statement in Java?
- Is there a Java equivalent or methodology for the typedef keyword in C++?
- Is there a javadoc tag for documenting generic type parameters?
- Is there a Maven alternative or port for the .NET world?

OOD Fundamentals
Master object-oriented design from first principles, SOLID, design patterns, and classic interview problems with hands-on coding.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.