What’s New in Spring Cloud 2025.0.0? Major Updates and Migration Guide
Spring Cloud 2025.0.0 "Northfields" was released on May 29, 2025, fully compatible with Spring Boot 3.5.0, bringing major enhancements to core microservice components, new Gateway features, Config AWS‑S3 support, Kubernetes config source integration, CircuitBreaker reactive isolation, Eureka client upgrades, and a detailed upgrade guide for developers.
Version Compatibility
Spring Boot : 3.5.0
Release Codename : Northfields (alphabetical naming tradition)
Main Changes : Includes breaking changes; smooth upgrade not supported. See detailed article for specifics.
Spring Cloud Gateway Major Updates
New Features
1. Function & Stream Processor Integration
Gateway now natively supports
spring-cloud-functionand
spring-cloud-streamprocessors:
<code>spring:
cloud:
gateway:
routes:
- id: function-route
uri: function://myFunction
predicates:
- Path=/api/process/**
- id: stream-route
uri: stream://myStreamProcessor
predicates:
- Path=/api/stream/**
</code>Technical Advantages :
Supports functional programming model for request handling
Integrates message‑driven architectures (Kafka, RabbitMQ)
Simplifies Serverless and event‑driven implementations
2. Bucket4j Rate Limiter Support
WebFlux version adds Bucket4j token‑bucket algorithm support:
<code>spring:
cloud:
gateway:
server:
webflux:
routes:
- id: rate-limited-route
uri: http://backend-service
filters:
- name: Bucket4jRateLimit
args:
capacity: 100
refill-rate: 10
refill-period: PT1S
</code>Important Deprecations
1. WebClientRouting Infrastructure
Status : Deprecated, will be removed in version 5.0
Impact : Routing logic depending on this infrastructure must be migrated
Recommendation : Use the standard routing mechanism provided by Gateway
2. Module and Starter Renaming
New naming conventions introduced to distinguish WebFlux and WebMVC server modes:
<code>spring-cloud-gateway-server → spring-cloud-gateway-server-webflux
spring-cloud-gateway-server-mvc → spring-cloud-gateway-server-webmvc
spring-cloud-starter-gateway-server → spring-cloud-starter-gateway-server-webflux
spring-cloud-starter-gateway-server-mvc → spring-cloud-starter-gateway-server-webmvc
spring-cloud-gateway-mvc → spring-cloud-gateway-proxyexchange-webmvc
spring-cloud-gateway-webflux → spring-cloud-gateway-proxyexchange-webflux
</code>Spring Cloud Config Enhancements
AWS S3 YAML Profile Support
Config Server can now read profile‑specific YAML files from S3:
<code>spring:
cloud:
config:
server:
awss3:
bucket: my-config-bucket
region: us-west-2
</code>File structure example:
<code>s3://my-config-bucket/
├── application.yaml
├── application-dev.yaml
├── application-prod.yaml
└── application-test.yaml
</code>Spring Cloud Kubernetes Updates
Combined Config Source Support
Kubernetes ConfigMap and Secret can now be used as combined configuration sources:
<code>spring:
cloud:
kubernetes:
config:
sources:
- name: app-config
namespace: default
- name: db-secret
namespace: default
explicit-prefix: database
</code>Configuration Priority
Command line arguments
System properties
Kubernetes ConfigMap/Secret
application.yaml
Default values
Spring Cloud Circuitbreaker New Features
Reactive Isolation Support
Added support for reactive programming model:
<code>@Component
public class ReactiveService {
@Autowired
private ReactiveCircuitBreakerFactory circuitBreakerFactory;
public Mono<String> callExternalService() {
return circuitBreakerFactory.create("external-service")
.run(webClient.get().uri("/api/data").retrieve().bodyToMono(String.class),
throwable -> Mono.just("fallback-response"));
}
}
</code>Configuration example:
<code>resilience4j:
bulkhead:
instances:
external-service:
max-concurrent-calls: 10
max-wait-duration: 1000ms
</code>Spring Cloud Netflix Improvements
Eureka Client Enhancements
Supports Apache HTTP Client 5 RequestConfig customization:
<code>@Bean
public EurekaClientHttpRequestFactorySupplier customRequestFactorySupplier() {
return () -> {
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000)
.setSocketTimeout(10000)
.setConnectionRequestTimeout(3000)
.build();
return new HttpComponentsClientHttpRequestFactory(HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.build());
};
}
</code>Upgrade Guide
Prerequisites
Upgrade Spring Boot to 3.5.0
Java version : Ensure Java 17+
Upgrade Steps
1. Update BOM version
<code><dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2025.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</code>2. Migrate Gateway module
<code><!-- Old dependency -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- New dependency -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway-server-webflux</artifactId>
</dependency>
</code>3. Migrate configuration properties
<code># Old configuration
spring:
cloud:
gateway:
routes:
- id: example
uri: http://example.com
# New configuration
spring:
cloud:
gateway:
server:
webflux:
routes:
- id: example
uri: http://example.com
</code>4. Update security configuration
<code>spring:
cloud:
gateway:
server:
webflux:
trusted-proxies: "10\\..*|192\\.168\\..*"
</code>5. Spring Cloud Alibaba Compatibility Note
If your project uses Spring Cloud Alibaba components, be aware of log‑dependency conflicts between Spring Cloud 2025.0.0 and Spring Cloud Alibaba 2023.0.3, which may cause startup failures. Resolve by following the recommended conflict‑resolution steps.
Java Architecture Diary
Committed to sharing original, high‑quality technical articles; no fluff or promotional content.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.