close

Spring Cloud 2022.0.0 (codename Kilburn) Has Been Released

On behalf of the community, I am pleased to announce that the General Availability (RELEASE) of the Spring Cloud 2022.0 Release Train is available today. The release can be found in Maven Central. You can check out the 2022.0 release notes for more information.

Notable Changes in the 2022.0.0 Release Train

Spring Cloud 2022.0.0 is a major release that builds upon Spring Framework 6.x and Spring Boot 3.x. This includes compatibility with Jakarta EE and requires a Java 17 baseline. See here for the issues included in this release. Below are highlights from all of the 2022.0.0 milestone, release candidate and GA releases.

Spring Cloud OpenFeign feature complete announcement

Since Spring now provides its own interface HTTP clients solution, starting with 2022.0.0, we’re going to treat Spring Cloud OpenFeign as feature complete. This means that the Spring Cloud team will no longer be adding new features to the module. We will still fix bugs and security issues, and we will also consider and review small pull requests from the community.

Spring Cloud Kubernetes

  • Removed the use of @ConditionalOnKubernetesEnabled in favor of @ConditionalOnCloudPlatform from Spring Boot (893)
  • Refactor configmaps and secrets implementation (#917)
  • Load Config Maps and Secrets using spring.config.import removing the need to use Bootstrap context (1002)
  • Secrets and Config Maps support prefixes (765)
  • Filter service discovery by namespace (#1000)
  • KubernetesCatalogWatch should support namespaces (#1158)
  • Upgrade To Kubernetes Java Client 17 (#1168)
  • Update to fabric8 6.2.0 (#1165)
  • Use endpoint slices for fabric8 catalog watcher (#1149)

Spring Cloud Function

  • Added support for AOT & native

Spring Cloud Circuitbreaker

  • Bump Resilience4J To 2.0.2
  • Add support for disabling threadpools when running Resilient4J circuitbreakers (147)

Spring Cloud Task

  • Find out what is new and changed in Spring Cloud Tasks (release notes)
  • Read More on how to migrate from Spring Cloud Task 2.x to 3.0 in the (migration guide)

Spring Cloud Stream

  • Added support for AOT & native

Spring Cloud OpenFeign

  • Allow customising load-balanced requests based on the selected ServiceInstance (#735)
  • Added support for target URL refreshing (#710)
  • Added support for LoadBalancer X-Forwarded Headers (#748)
  • Set Jackson Autoconfiguration to be enabled by default (#476)
  • Removed deprecations and adjusted to the API changes in Feign (#768)
  • Removed usage of Spring Cloud Commons HttpClient interfaces (#788)
  • Apache HttpClient 4 has been removed in favour of Apache HttpClient 5 (#783)
  • Upgraded to Feign 12.0 (#782)
  • Support for AOT and native images has been added (#794)
  • Support for Micrometer Observation API has been added ([#793]https://github.com/spring-cloud/spring-cloud-openfeign/pull/793))
  • Feign has been upgraded to Feign 12.1 (#792)
  • Added possibility to configure ResponseInterceptor (#802)

Spring Cloud Commons

  • Adds registration lifecycle listeners (#999)
  • Request data context for blocking LoadBalancer client requests has been made available to lifecycle callbacks (#1090)
  • The OAuth integration has been migrated from the deprecated Spring Security OAuth to OAuth2 support in Spring Security (#1053)
  • Added possibility to retry on specific exceptions for the LoadBalancer
  • Adds registration lifecycle listeners (#999https://github.com/spring-cloud/spring-cloud-commons/issues/999)
  • Request data context for blocking LoadBalancer client requests has been made available to lifecycle callbacks (#1090)
  • Added the possibility to eagerly create LoadBalancer child contexts (#729)

  • Added Weight-based load-balancing (#1063)
  • Added support for LoadBalancer child contexts in AOT and native image support (#1135)
  • Support added for property-based configuration for weighted load-balancing (#1163)
  • Removed Interfaces relying on Apache HttpClient v4. Removed OK HttpClient interfaces as they were only used by Spring Cloud OpenFeign. Spring Cloud OpenFeign now uses the OK HttpClient directly (#1171)
  • Deprecated classes and interfaces have been removed. See breaking changes in the Spring Cloud 2022 Release Notes

  • Switched to lazily initializing child contexts in AOT mode (#1176)

Spring Cloud Contract

Spring Cloud Netflix

  • Updated to Eureka 2.0.0. Eureka 2.0.0 is a new branch of Eureka unrelated to the old 2.x-archive experiment from 7 years ago. The new 2.x branch is for compatibility with JakartaEE. This allows Spring Cloud Netflix to be compatible with Spring Framework 6.0 and Spring Boot 3.0.
  • Migrated Apache HttpClient to Apache HC5 HttpClient (#4126)

Spring Cloud Consul

  • Added support for AOT & native

Spring Cloud Config

Spring Cloud Gateway

  • Added support for AOT & native
  • Added a LocalResponseCache filter (2759)
  • Added micrometer Observability support (2715)

The following modules were updated as part of 2022.0.0:

Module Version Issues
Spring Cloud Vault 4.0.0 (issues)
Spring Cloud Kubernetes 3.0.0 (issues)
Spring Cloud Function 4.0.0  
Spring Cloud Zookeeper 4.0.0  
Spring Cloud Circuitbreaker 3.0.0 (issues)
Spring Cloud Task 3.0.0  
Spring Cloud Bus 4.0.0  
Spring Cloud Stream 4.0.0  
Spring Cloud Openfeign 4.0.0 (issues)
Spring Cloud Commons 4.0.0 (issues)
Spring Cloud Contract 4.0.0  
Spring Cloud Starter Build 2022.0.0  
Spring Cloud Netflix 4.0.0 (issues)
Spring Cloud Consul 4.0.0  
Spring Cloud Config 4.0.0 (issues)
Spring Cloud Build 4.0.0  
Spring Cloud Gateway 4.0.0 (issues)

As always, we welcome feedback on GitHub, on Gitter, on Stack Overflow, or on Twitter.

To get started with Maven with a BOM (dependency management only):

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2022.0.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    ...
</dependencies>

or with Gradle:

plugins {
  id 'java'
  id 'org.springframework.boot' version '3.0.0'
  id 'io.spring.dependency-management' version '1.1.0'
}

repositories {
  mavenCentral()
}

ext {
  set('springCloudVersion', "2022.0.0")
}

dependencies {
  implementation 'org.springframework.cloud:spring-cloud-starter-config'
  implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
}

dependencyManagement {
  imports {
    mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
  }
}
comments powered by Disqus