Engineering
Releases
News and Events

Spring Cloud Greenwich.RELEASE is now available

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

End of Life (EOL) Reminder

The Edgware release train will reach EOL status on August 1st, 2019. You can read the formal announcement here.

The Spring Cloud Finchley release train is considered a major release and is tied to the Spring Boot 2.0.x release. Therefore, the Spring Cloud Finchley release train will reach EOL status when the Spring Boot 2.0.x release branch is marked EOL. An announcement about this will be made on this blog once a date has been determined.

The Spring Cloud Greenwich release train is considered a minor release and will continue support for the Spring Boot 2.x release branch.

Notable Changes in the Greenwich Release Train

Updates were made across all projects for Java 11 compatibility.

New Projects

There are two new projects included in the Greenwich Release train, Spring Cloud GCP (which provides integration with Google Cloud Platform), and Spring Cloud Kubernetes (which provides integration with Kubernetes).

Spring Cloud Netflix Projects Entering Maintenance Mode

Recently, Netflix announced that Hystrix is entering maintenance mode. Ribbon has been in a similar state since 2016. Although Hystrix and Ribbon are now in maintenance mode, they are still deployed at scale at Netflix.

The Hystrix Dashboard and Turbine have been superseded by Atlas. The last commits to these project are two years and four years ago respectively. Zuul 1 and Archaius 1 have both been superseded by later versions that are not backward compatible.

The following Spring Cloud Netflix modules and corresponding starters will be placed into maintenance mode:

  1. spring-cloud-netflix-archaius
  2. spring-cloud-netflix-hystrix-contract
  3. spring-cloud-netflix-hystrix-dashboard
  4. spring-cloud-netflix-hystrix-stream
  5. spring-cloud-netflix-hystrix
  6. spring-cloud-netflix-ribbon
  7. spring-cloud-netflix-turbine-stream
  8. spring-cloud-netflix-turbine
  9. spring-cloud-netflix-zuul

This does not include the Eureka or concurrency-limits modules.

What is Maintenance Mode?

Placing a module in maintenance mode means that the Spring Cloud team will no longer add new features to the module. We will fix blocker bugs and security issues, and we will also consider and review small pull requests from the community.

We intend to continue to support these modules for a period of at least a year from the general availability of the Greenwich release train.

Replacements

We recommend the following as replacements for the functionality provided by these modules.

Current Replacement
Hystrix Resilience4j
Hystrix Dashboard / Turbine Micrometer + Monitoring System
Ribbon Spring Cloud Loadbalancer
Zuul 1 Spring Cloud Gateway
Archaius 1 Spring Boot external config + Spring Cloud Config

Look for a future blog post on Spring Cloud Loadbalancer and integration with a new Netflix project Concurrency Limits.

Spring Cloud Sleuth

  • Updates to the latest Brave library.
  • Performance improvements of WebFlux and Reactor integration.
  • GRPC instrumentation added.
  • Added support for multiple span reporters.
  • Rate limit sampler support added.

Spring Cloud GCP

See the Google release announcement.

Spring Cloud Netflix

  • Upgraded Ribbon and Eureka versions.
  • Support was added for the new ServiceInstance.instanceId field.

Spring Cloud Consul

  • Support was added for the new ServiceInstance.instanceId field.

Spring Cloud Gateway

  • Added a rewrite response header filter.
  • Support was added for multiple paths and hosts in their respective route predicates and to customize the HTTP status code returned in certain situations.

Spring Cloud Function

  • Kotlin support
  • New programming model for Azure Functions
  • Automatic (optional) export of Supplier on startup in web adapter
  • Functional Bean Registrations
  • and more

Spring Cloud Stream

See the Spring Cloud Stream release announcement.

Spring Cloud Zookeeper

  • Support was added for the new ServiceInstance.instanceId field.

Spring Cloud Task

See the Spring Cloud Task release announcement.

Spring Cloud Kubernetes

  • You can now configure ServiceInstance metadata to come from Kubernetes Labels, Annotations, and Ports.
  • Enhancements were made to use the KubernetesDiscoveryClient during bootstrap.
  • Added a module to detect the presence of Istio.

Spring Cloud Contract

  • Added support for XML payloads issue.
  • Allows dumping contracts into a common representation issue.
  • Added WebTestClient support for testing contracts with WebFlux issue.
  • Improved Pact integration issue.
  • Added back Camel support issue.
  • Added JUnit5 support issue
  • Bumped WireMock to the latest version issue.
  • Added support for binary payload issue.
  • Added support for latest version in Git storage issue.
  • Allow providing explicit type for regular expression generation issue.

Spring Cloud Security

  • Spring Cloud Gateway Filter added to support OAuth2. A sample application demonstrating its use is available here.

Spring Cloud Config

  • Added EnvironmentRepository to support a CredHub backend.

Spring Cloud Vault

  • Added support for Google Cloud and Azure authentication.
  • Upgrade to Spring Vault 2.1.1.

Spring Cloud OpenFeign

  • Support was added for @QueryMap annotation.
  • Upgrade to OpenFeign 10.1.0.

Spring Cloud Commons

  • Added instanceId to the ServiceInstance interface.
  • Added a ReactiveLoadBalancer interface and implementation using Reactor.

The following modules were updated as part of Greenwich.RELEASE:

Module Version Issues
Spring Cloud Sleuth 2.1.0.RELEASE (issues)
Spring Cloud Gcp 1.1.0.RELEASE (issues)
Spring Cloud Build 2.1.2.RELEASE  
Spring Cloud Netflix 2.1.0.RELEASE (issues)
Spring Cloud Consul 2.1.0.RELEASE  
Spring Cloud Gateway 2.1.0.RELEASE (issues)
Spring Cloud Greenwich.RELEASE  
Spring Cloud Function 2.0.0.RELEASE (issues)
Spring Cloud Stream Fishtown.RELEASE  
Spring Cloud Zookeeper 2.1.0.RELEASE  
Spring Cloud Cloudfoundry 2.1.0.RELEASE  
Spring Cloud Aws 2.1.0.RELEASE  
Spring Cloud Task 2.1.0.RELEASE  
Spring Cloud Kubernetes 1.0.0.RELEASE (issues)
Spring Cloud Contract 2.1.0.RELEASE (issues)
Spring Cloud Release Greenwich.RELEASE  
Spring Cloud Security 2.1.0.RELEASE  
Spring Cloud Starter Greenwich.RELEASE  
Spring Cloud Bus 2.1.0.RELEASE (issues)
Spring Cloud Config 2.1.0.RELEASE (issues)
Spring Cloud Vault 2.1.0.RELEASE (issues)
Spring Cloud Openfeign 2.1.0.RELEASE (issues)
Spring Cloud Commons 2.1.0.RELEASE  
Spring Cloud Dependencies 2.1.2.RELEASE  

As always, we welcome feedback on GitHub, on Gitter, on Stack Overflow, and 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>Greenwich.RELEASE</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>

To get started with Gradle:

buildscript {
    dependencies {
        classpath "io.spring.gradle:dependency-management-plugin:1.0.2.RELEASE"
    }
}



apply plugin: "io.spring.dependency-management"

dependencyManagement {
    imports {
        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Greenwich.RELEASE'
    }
}

dependencies {
    compile 'org.springframework.cloud:spring-cloud-starter-config'
    compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    ...
}
comments powered by Disqus