Spring Cloud 2020.0.0-RC1 (aka Ilford) Is Available
On behalf of the community, I am pleased to announce that Release Candidate 1 (RC1) of the Spring Cloud 2020 Release Train is available today. You can find the release in the Spring Milestone repository. See the 2020 release notes for more information.
Notable Changes in the 2020 Release Train
This release requires Spring Boot 2.4.0.
See the wiki for a list of all breaking changes in this release train.
See all of the included issues and pull requests at the Github project.
Spring Cloud Contract
The Gradle plugin creates a separate classpath when executing tasks.
Spring Cloud Kubernetes
- Packages and starters have been refactored to accommodate new Kubernetes Java Client implementations
- Starters have been added for Kubernetes Java Client implementations (PR)
Spring Cloud Commons
- LoadBalancer - you can now use a custom health verification function and a RestTemplate-based mechanism with
HealthcheckServiceInstanceListSupplier
(PR - LoadBalancerProperties have been repackaged
- Support has been added for
LoadBalancer
selecting same instance if available (PR) - Support has been added for `LoadBalancer selecting the instance specified by a cookie, if available (PR)
Spring Cloud Function
Spring Cloud Function introduces two new features: support for RSocket and Cloud Events.
While we’re in the process of updating documentation with details on these features, you can check out samples and integration test cases to get additional information now.
For Cloud Events support, you can look at the Cloud Events samples as well as a recently published blog post.
For RSocket support, you can look at some of the test cases demonstrating how functions can be invoked via RSocket.
Spring Cloud Sleuth
Moving OpenTelemetry support to incubator
As OpenTelemetry continues to evolve, we have decided to move OpenTelemetry support from Spring Cloud Sleuth to an incubator project . To continue using OpenTelemetry with Spring Cloud Sleuth, you will need to add the Spring repositories, the spring-cloud-sleuth-otel-dependencies
BOM, and the spring-cloud-sleuth-otel-autoconfigure
dependency.
We have released a 1.0.0-M1
of Spring Cloud Sleuth OTel that is compatible with the 2020.0.0-RC1
release train. The following listings show how to use it in Maven and Gradle:
Maven
<properties>
<spring-cloud-sleuth-otel.version>1.0.0-M1</spring-cloud-sleuth-otel.version>
<spring-cloud.version>2020.0.0-RC1</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-otel-dependencies</artifactId>
<!-- Provide the version of the Spring Cloud Sleuth OpenTelemetry project -->
<version>${spring-cloud-sleuth-otel.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-brave</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-otel-autoconfigure</artifactId>
</dependency>
<repositories>
<repository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
Gradle
ext {
springCloudSleuthOtelVersion = "1.0.0-M1"
springCloudVersion = "2020.0.0-RC1"
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
mavenBom "org.springframework.cloud:spring-cloud-sleuth-otel-dependencies:${springCloudSleuthOtelVersion}"
}
}
dependencies {
implementation("org.springframework.cloud:spring-cloud-starter-sleuth") {
exclude group: 'org.springframework.cloud', module: 'spring-cloud-sleuth-brave'
}
implementation "org.springframework.cloud:spring-cloud-sleuth-otel-autoconfigure"
}
repositories {
mavenCentral()
maven {
url "https://repo.spring.io/snapshot"
}
maven {
url "https://repo.spring.io/milestone"
}
maven {
url "https://repo.spring.io/release"
}
}
Spring Cloud Task
- Added ability for the user to utilize external DBs for Multi-DB sample
- Spring Cloud Task now supports
JobApplicationRunner
- Single-step Batch Job sample now supports AMQP and Kafka
Spring Cloud Gateway
- LoadBalancer Lifecycle support has been added (PR)
The following modules were updated as part of 2020.0.0-RC1:
Module | Version | Issues |
---|---|---|
Spring Cloud Circuitbreaker | 2.0.0-RC1 | (issues) |
Spring Cloud Contract | 3.0.0-RC1 | (issues) |
Spring Cloud Kubernetes | 2.0.0-RC1 | (issues) |
Spring Cloud Commons | 3.0.0-RC1 | |
Spring Cloud Openfeign | 3.0.0-RC1 | |
Spring Cloud Cloudfoundry | 3.0.0-RC1 | |
Spring Cloud Security | 3.0.0-RC1 | |
Spring Cloud Bus | 3.0.0-RC1 | |
Spring Cloud Cli | 3.0.0-RC1 | |
Spring Cloud Zookeeper | 3.0.0-RC1 | (issues) |
Spring Cloud Sleuth | 3.0.0-RC1 | (issues) |
Spring Cloud Consul | 3.0.0-RC1 | |
Spring Cloud Gateway | 3.0.0-RC1 | |
Spring Cloud Netflix | 3.0.0-RC1 | (issues) |
Spring Cloud Vault | 3.0.0-RC1 | (issues) |
Spring Cloud Config | 3.0.0-RC1 | (issues) |
Spring Cloud Task | 2.3.0-RC1 | (issues) |
As always, we welcome feedback on GitHub, on Gitter, on Stack Overflow, or on Twitter.
The following listings show how to get started with Maven with a BOM (dependency management only) or with Gradle:
Maven with BOM:
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2020.0.0-RC1</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>
Gradle:
buildscript {
dependencies {
classpath "io.spring.gradle:dependency-management-plugin:1.0.2.RELEASE"
}
}
repositories {
maven {
url 'https://repo.spring.io/milestone'
}
}
apply plugin: "io.spring.dependency-management"
dependencyManagement {
imports {
mavenBom 'org.springframework.cloud:spring-cloud-dependencies:2020.0.0-RC1'
}
}
dependencies {
compile 'org.springframework.cloud:spring-cloud-starter-config'
compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
...
}