Skip to content

Spring Cloud 2022.0 Release Notes

Olga Maciaszek-Sharma edited this page Dec 16, 2022 · 46 revisions

Breaking Changes

  • Spring Cloud CLI
    • This project has been removed from the release train.
  • Spring Cloud Cloudfoundry
    • This project has been removed from the release train.
  • Spring Cloud Commons
    • AsyncRestTemplate has been removed in Spring Framework 6, therefore auto-configuration for LoadBalancer has been removed.
    • Migrated to new Spring Security OAuth 2 for Token Relay.
    • spring.config.use-legacy-processing=true no longer enables bootstrap because of changes in Spring Boot 3.0. Please use spring.cloud.bootstrap.enabled=true.
    • LoadBalancer ResponseData now uses org.springframework.http.HttpStatusCode.
    • Deprecated constructors have been removed from ReactorLoadBalancerExchangeFilterFunction, RetryableLoadBalancerExchangeFilterFunction, RetryLoadBalancerInterceptor, BlockingLoadBalancerClient, HealthCheckServiceInstanceListSupplier, HintBasedServiceInstanceListSupplier, LoadBalancerServiceInstanceCookieTransformer, RequestBasedStickySessionServiceInstanceListSupplier, LoadBalancerClientFactory. There are newer constructors in place that the users will need to migrate to.
    • The way the scheme is being resolved for service instances has been changed #1168. The users can now override the getScheme() method to provide their own implementation and might need to do so to maintain compatibility.
    • Removed @EnableCircuitBreaker as it was only used by Hystrix in Spring Cloud Netflix which is no longer supported
    • Remove @SpringCloudApplication annotation. @EnableDiscoveryClient and @EnableCircuitBreaker are no longer needed.
    • Removed classes and interfaces under org.springframework.commons.httpclient #1171
  • Spring Cloud Contract
  • Spring Cloud Sleuth
    • This project has been removed from the release train. The core of this project has moved to Micrometer Tracing project and the instrumentations will be moved to Micrometer and all respective projects (no longer all instrumentations will be done in a single repository.
  • Spring Cloud Kubernetes
    • In versions prior to 3.0.0-M1, Kubernetes awareness was implemented using spring.cloud.kubernetes.enabled property. This property was removed and is un-supported. Instead, we use Spring Boot API: ConditionalOnCloudPlatform. If it is needed to explicitly enable or disable this awareness, use spring.main.cloud-platform=NONE/KUBERNETES.
  • Spring Cloud OpenFeign
    • LoadBalancer ResponseData now uses org.springframework.http.HttpStatusCode.
    • OAuth2 support has been migrated to Spring Security OAuth2 client.
    • feign.autoconfiguration.jackson.enabled is now set to true by default.
    • In keeping with the changes in the upstream Feign project, decode404 property and decode404 segments in method signatures have been changed to dismiss404.
    • Deprecated constructors and methods have been removed.
    • In keeping with the changes in Spring Framework, support for Apache HttpClient 4 has been removed. Apache HttpClient 5 is the recommended replacement and its support has been available for some time now.
    • spring.cloud.openfeign.metrics property prefix has been changed to spring.cloud.openfeign.micrometer.
  • Spring Cloud Netflix
    • Removed unnecessary @EnableEurekaClient annotation
    • Removed deprecated RestTemplateDiscoveryClientOptionalArgs#RestTemplateDiscoveryClientOptionalArgs() constructor
    • Switched to default eager @FeignClient attribute resolution. If you would like to go back to lazy attributes resolution (for example, for tests with Spring Cloud Contract integration), set spring.cloud.openfeign.lazy-attributes-resolution to true.

AOT transformations and native image support

As of 2022.0, most of the Spring Cloud projects support Spring Boot's ahead-of-time transformations, as well as building and running Spring Cloud components as native images. However, there are some limitations, as listed below.

Refresh Scope

Refresh Scope is not supported for any Spring Cloud applications in AOT and native image. The spring.cloud.refresh.enabled flag needs to be set to false.

Spring Cloud Config

Spring Cloud Config Server is blocked by graal#5134 and will likely require the completion of the work on https://github.com/graalvm/taming-build-time-initialization to be fixed.

Spring Cloud Config Client is supported for AOT and native image, however, the user must ensure that the configuration data source that it connects to (such as, Spring Cloud Config Server, Consul, Zookeeper, Vault, etc.) is available at build time. In order to avoid unexpected behaviour, any properties that would influence bean creation (such as the ones used within bootstrap context) should be set to the same values at build time and runtime. Since Config Client connects to a running data source (such as Config Server) while starting up from native image, the quick startup time will be slowed down by the time required for this network communication to take place.

The legacy config processing (Config First Bootstrap) mode does not support AOT or native images.

Spring Cloud LoadBalancer

In order for load-balancing to work with AOT and native images, all the LoadBalancerClient service IDs have to be explicitly defined by the user. However, to use this feature. It can be done by using the value or name attributes of the @LoadBalancerClient annotation or as values of the spring.cloud.loadbalancer.eager-load.clients property.

Spring Cloud Netflix

Spring Cloud Netflix Eureka Server does not support AOT or native images.

Spring Cloud Stream

Spring Cloud Stream has a component called StreamBridge which is effectively a template to send messages - messages that can be represented as Spring Message as well as any primitive or POJO. For example streamBridge.send(“myQueue”, “Hello stream”)or streamBridge.send(“myQueue”, new Foo()). The issue is that we do not know what user may send and thus can not introspect it which means the user would need to know the types they may be sending and add them as hints via @RegisterReflectionForBinding(Foo.class).

Spring Cloud Kubernetes

At this point, Spring Cloud Kubernetes does not support Spring Boot AOT transformations or native images. Partial support might be added in future releases.

Spring Cloud Task

To utilize Spring Cloud Task’s single instance feature when creating a natively compiled app, the feature needs to be enabled at build time. This is done by adding the process-aot execution and setting the spring.cloud.task.single-step-instance-enabled=true as a JVM argument.

Single Step Batch Job reader and writer selection needs to be specified at build time.

2022.0.0-RC3

2022-12-01

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

2022.0.0-RC2

All issues

2022-11-17

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

2022.0.0-RC1

2022-10-28

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

2022.0.0-M5

2022-10-06

NOTE: To use Eureka in this milestone, you will need to add the Netflix Candidates repository.

<repository>
       <id>netflix-candidates</id>
       <name>Netflix Candidates</name>
       <url>https://artifactory-oss.prod.netflix.net/artifactory/maven-oss-candidates</url> 
       <snapshots>
	    <enabled>false</enabled>
       </snapshots>
</repository>
  • Spring Cloud Stream 4.0.0-M5
  • Spring Cloud Config 4.0.0-M5 (issues)
  • Spring Cloud Build 4.0.0-M5 (issues)
  • Spring Cloud Consul 4.0.0-M5 (issues)
  • Spring Cloud Gateway 4.0.0-M5 (issues)
  • Spring Cloud Kubernetes 3.0.0-M5 (issues)
  • Spring Cloud Netflix 4.0.0-M1 (issues)
  • Spring Cloud Starter Build 2022.0.0-M5
  • Spring Cloud Circuitbreaker 3.0.0-M5 (issues)
  • Spring Cloud Contract 4.0.0-M5 (issues)
  • Spring Cloud Bus 4.0.0-M5 (issues)
  • Spring Cloud Function 4.0.0-M5
  • Spring Cloud Task 3.0.0-M5 (issues)
  • Spring Cloud Zookeeper 4.0.0-M5 (issues)
  • Spring Cloud Openfeign 4.0.0-M5 (issues)
  • Spring Cloud Vault 4.0.0-M5 (issues)
  • Spring Cloud Commons 4.0.0-M5 (issues)

2022.0.0-M4

2022-07-29

  • Spring Cloud Stream 4.0.0-M4
  • Spring Cloud Config 4.0.0-M4 (issues)
  • Spring Cloud Build 4.0.0-M4
  • Spring Cloud Consul 4.0.0-M4 (issues)
  • Spring Cloud Kubernetes 3.0.0-M4 (issues)
  • Spring Cloud Gateway 4.0.0-M4
  • Spring Cloud Starter Build 2022.0.0-M4
  • Spring Cloud Circuitbreaker 3.0.0-M4
  • Spring Cloud Contract 4.0.0-M4 (issues)
  • Spring Cloud Bus 4.0.0-M4
  • Spring Cloud Function 4.0.0-M4
  • Spring Cloud Task 3.0.0-M4 (issues)
  • Spring Cloud Zookeeper 4.0.0-M4
  • Spring Cloud Openfeign 4.0.0-M4
  • Spring Cloud Vault 4.0.0-M4 (issues)
  • Spring Cloud Commons 4.0.0-M4 (issues)

2022.0.0-M3

2022-06-15

  • Spring Cloud Stream 4.0.0-M3
  • Spring Cloud Config 4.0.0-M3 (issues)
  • Spring Cloud Build 4.0.0-M3
  • Spring Cloud Starter Build 2022.0.0-M3
  • Spring Cloud Kubernetes 3.0.0-M3 (issues)
  • Spring Cloud Circuitbreaker 3.0.0-M3 (issues)
  • Spring Cloud Contract 4.0.0-M3 (issues)
  • Spring Cloud Consul 4.0.0-M3
  • Spring Cloud Gateway 4.0.0-M3
  • Spring Cloud Function 4.0.0-M3
  • Spring Cloud Vault 4.0.0-M3 (issues)
  • Spring Cloud Bus 4.0.0-M3 (issues)
  • Spring Cloud Zookeeper 4.0.0-M3
  • Spring Cloud Task 3.0.0-M3 (issues)
  • Spring Cloud Openfeign 4.0.0-M3
  • Spring Cloud Commons 4.0.0-M3 (issues)

2022.0.0-M2

All issues

2022-04-01

  • Spring Cloud Stream 4.0.0-M2
  • Spring Cloud Config 4.0.0-M2 (issues)
  • Spring Cloud Build 4.0.0-M2
  • Spring Cloud Kubernetes 3.0.0-M2 (issues)
  • Spring Cloud Circuitbreaker 3.0.0-M2 (issues)
  • Spring Cloud Contract 4.0.0-M2 (issues)
  • Spring Cloud Consul 4.0.0-M2
  • Spring Cloud Gateway 4.0.0-M2 (issues)
  • Spring Cloud Starter Build 2022.0.0-M2
  • Spring Cloud Function 4.0.0-M2
  • Spring Cloud Vault 4.0.0-M2
  • Spring Cloud Bus 4.0.0-M2
  • Spring Cloud Zookeeper 4.0.0-M2
  • Spring Cloud Task 3.0.0-M2 (issues)
  • Spring Cloud Commons 4.0.0-M2 (issues)
  • Spring Cloud Openfeign 4.0.0-M2 (issues)

2022.0.0-M1

All issues

2022-01-27

  • Spring Cloud Vault 4.0.0-M1
  • Spring Cloud Config 4.0.0-M1
  • Spring Cloud Zookeeper 4.0.0-M1
  • Spring Cloud Commons 4.0.0-M1 (issues)
  • Spring Cloud Kubernetes 3.0.0-M1 (issues)
  • Spring Cloud Task 3.0.0-M1 (issues)
  • Spring Cloud Starter Build 2022.0.0-M1
  • Spring Cloud Circuitbreaker 3.0.0-M1
  • Spring Cloud Bus 4.0.0-M1
  • Spring Cloud Consul 4.0.0-M1 (issues)
  • Spring Cloud Gateway 4.0.0-M1
  • Spring Cloud Openfeign 4.0.0-M1
Clone this wiki locally