Spring Cloud Finchley.RELEASE is available
On behalf of the community, I am pleased to announce that the General Availability (RELEASE) of the Spring Cloud Finchley Release Train is available today. The release can be found in Maven Central. You can check out the Finchley release notes for more information.
Lifecycle Announcements for Release Train Versions
The Camden release train has reached end-of-life status. The Dalston release train will reach end-of-life status in December 2018. The Edgware release train will follow the end-of-life cycle of the Spring Boot 1.5.x line.
Notable Changes in the Finchley Release Train
Spring Cloud Function and Spring Cloud Gateway are new additions to the Spring Cloud portfolio. The portfolio was also made compatible with Spring Boot 2.0.x which was a significant effort. Spring Cloud now has a minimum version of Java 8.
Spring Cloud Gateway
Spring Cloud Gateway is an API Gateway built on top of Spring Webflux and Reactor Netty. It is a next generation gateway and can be viewed as a replacement for Spring Cloud Netflix Zuul. It provides dynamic routing based on easy to define predicates. It also provides filters that are scoped to each route, examples include: path rewriting, circuit breaker, adding or removing headers, rate limiting and security. Routes can be defined using properties or using included support for DiscoveryClient
(Eureka, Consul & Zookeeper).
Spring Cloud Function
Spring Cloud Function is a project with the following high-level goals:
- Promote the implementation of business logic via functions.
- Decouple the development lifecycle of business logic from any specific runtime target so that the same code can run as a web endpoint, a stream processor, or a task.
- Support a uniform programming model across serverless providers, as well as the ability to run standalone (locally or in a PaaS).
- Enable Spring Boot features (auto-configuration, dependency injection, metrics) on serverless providers.
Spring Cloud Sleuth
- Rewritten using Brave #829, migration guide https://github.com/spring-cloud/spring-cloud-sleuth/wiki/Spring-Cloud-Sleuth-2.0-Migration-Guide
- Removed the
sleuth-stream
#555 andzipkin-stream
#727 dependencies. Spans via messaging can be only sent to Zipkin via native Zipkin dependencies. spring.zipkin.sender.type=kafka
needs to explicitly be set to send spans over Kafka #985, #1013- Added WebClient.Builder support #779
- Trace tags account for parametrized URL #802
- Added support for NettyClient instrumentation - allows instrumentation of Spring Cloud Gateway #806
- Fixed all early bean initialization issues #870
- Added spring-kafka support #896
- Added spring-rabbitmq support #883
- Added support for Apache HttpClient #685
- Added OpenTracing support #599
- Added support for AWS X-Ray #459
TraceKeys
are hidden from the user and are deprecated #940- Added support for Dubbo #934
Examples: https://github.com/spring-cloud-samples/sleuth-documentation-apps, https://github.com/openzipkin/sleuth-webmvc-example
Spring Cloud Config
- Allow the ability to skip SSL validation for both Git and Vault backends
- Git backend now has a refresh rate property #749
- Add support for Gitee webhooks #898
Spring Cloud Netflix
- Starters deprecated in Edgware have been removed
spring-cloud-netflix-hystrix-amqp
has been removedZuulFallbackProvider
has been removed and replaced withFallbackProvider
#2262/hystrix.stream
now uses WebFlux #2629- Turbine now has a
/clusters
endpoint that can be used to discover configured clusters #2223 - Spring Cloud OpenFeign has been moved to its own project
- Zuul metrics now use Micrometer
- Turbine Stream support was rewritten to use Spring Webflux.
Spring Cloud Task
Please see the release blog post.
Spring Cloud Commons
- You can now use the
@LoadBalanced
annotation onWebClient
s - Retry functionality has been simplified #331
Spring Cloud Contract
- Added support for RestAssured with RestDocs #334
- Removed Camel support #386
- Introduced explicit mode of stubs fetching via
stubsMode
andcontractsMode
#287 - Made
@AutoConfigureStubRunner
a test slice #473 - Allows starting multiple versions of the same stub artifact #474
- Made collection assertion methods more verbose #441
- Added
@StubRunnerPort
convenience mechanism of finding stubs #573 - Allows storing downloaded artifacts after the test got executed #512
- Added helper methods for HTTP statuses #575
- Refreshed the documentation #570 and added a 3 seconds & 3 minutes tour #549
- Bumped WireMock to
2.18.0
#659 - Support for Pact v3 #406 and Pact Broker #191
- Option to upload and fetch stubs from a Git Repository #596
Examples: https://github.com/spring-cloud-samples/spring-cloud-contract-samples/
Spring Cloud Stream
Please see the release blog post.
Spring Cloud Vault
- Upgrade to Spring Vault 2.0 #203.
- Auto-configuration for
ReactiveVaultOperations
to provide a reactive API on top ofWebClient
#133. - Added Reactive Health Indicator #221.
- Pull, wrapped, and provided modes for AppRole’s RoleId and SecretId authentication identifiers #174.
- Support for Vault’s generic database backend #169.
- Retain JSON data types in the backing property source #189.
- Support for Vault’s versioned Key/Value backend #209.
- Upgraded Spring Cloud Vault Connectors 2.0.0.RELEASE to Spring Cloud Vault 2.0.0.RELEASE.
Examples: https://github.com/mp911de/spring-cloud-vault-config-samples/
Spring Cloud Bus
Actuator endpoints were updated to use the new actuator framework.
Spring Cloud Openfeign
- Support encoder, decoder and contract in Feign configuration properties #2687
Spring Cloud Cloudfoundry
The new reactive Cloud Foundry Java Client is used.
Spring Cloud Consul
Added support for HTTPS instances and ACLs. @Scheduled
is no longer used for Consul watches.
Spring Cloud Zookeeper
Updated to use Curator 4.0.1.
Spring Cloud Aws
Adds support for PropertySourceLocator that uses AWS Parameter Store. Micrometer support for CloudWatch metrics.
The following modules were updated as part of Finchley.RELEASE:
Module | Version |
---|---|
Spring Cloud Consul | 2.0.0.RELEASE |
Spring Cloud Gateway | 2.0.0.RELEASE |
Spring Cloud Function | 1.0.0.RELEASE |
Spring Cloud Zookeeper | 2.0.0.RELEASE |
Spring Cloud Sleuth | 2.0.0.RELEASE |
Spring Cloud Aws | 2.0.0.RELEASE |
Spring Cloud Config | 2.0.0.RELEASE |
Spring Cloud Cloudfoundry | 2.0.0.RELEASE |
Spring Cloud Security | 2.0.0.RELEASE |
Spring Cloud Netflix | 2.0.0.RELEASE |
Spring Cloud Task | 2.0.0.RELEASE |
Spring Cloud Commons | 2.0.0.RELEASE |
Spring Cloud Contract | 2.0.0.RELEASE |
Spring Cloud Stream | Elmhurst.RELEASE |
Spring Cloud Vault | 2.0.0.RELEASE |
Spring Cloud Bus | 2.0.0.RELEASE |
Spring Cloud Openfeign | 2.0.0.RELEASE |
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>Finchley.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>
or with Gradle:
buildscript {
dependencies {
classpath "io.spring.gradle:dependency-management-plugin:1.0.5.RELEASE"
}
}
apply plugin: "io.spring.dependency-management"
dependencyManagement {
imports {
mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Finchley.RELEASE'
}
}
dependencies {
compile 'org.springframework.cloud:spring-cloud-starter-config'
compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
...
}