You're seeing the release note of an old version. Check out the latest release note.
v1.31.0
November 13, 2024
🌟 New features
-
Dynamic TLS Configuration: You can now update TLS configurations dynamically using
TlsProvider#5033 #5228-
You can create a
TlsProviderwhich specifiesTlsKeyPairdynamically.// return a TlsKeyPair for host patterns
TlsProvider tlsProvider = TlsProvider
.builder()
.keyPair("*.a.com", TlsKeyPair.of(...))
.keyPair("*.b.com", TlsKeyPair.of(...))
.build();
// return a TlsKeyPair dynamically
TlsProvider tlsProvider = hostname -> TlsKeyPair.of(...); -
The
TlsProvidercan be used for both servers and clients.// client-side
ClientFactory
.builder()
.tlsProvider(tlsProvider);
// server-side
Server
.builder()
.tlsProvider(tlsProvider);
-
-
Access to Raw Request Path: You can access the raw request path via
ServiceRequestContext.rawPath(). #5931 #5932- This can be useful when you need to get the original request path sent from the client, even if it's potentially insecure.
ServiceRequestContext ctx = ...;
String rawPath = ctx.rawPath();
// rawPath may contain unencoded, invalid or insecure characters.
- This can be useful when you need to get the original request path sent from the client, even if it's potentially insecure.
-
Additional Static Factory Methods for ResponseEntity: More static factory methods are added for
ResponseEntity. #5954ResponseEntity<Object> response = ResponseEntity.of(200);
ResponseEntity<String> response = ResponseEntity.of("Hello!"); -
Timeout Support for HttpRequest and HttpResponse: You can specify
HttpRequest.timeout()orHttpResponse.timeout()to set a timeout for anHttpRequestorHttpResponse. #5744 #5761HttpRequest
.streaming(HttpMethod.GET, "/")
.timeout(Duration.ofSeconds(1)) // timeout if there is a delay exceeding 1 second between each data chunk -
Nacos Integration for Server Registration and Endpoint Retrieval: You can now register your server to or retrieve
Endpointsfrom a Nacos registry server. #5365 #5409- Use
NacosUpdatingListenerto register theServersto Nacos:
Server server = ...;
server.addListener(
NacosUpdatingListener
.builder(nacosUri, "my-service")
...
.build());- Use
NacosEndpointGroupfor clients:
EndpointGroup group = NacosEndpointGroup.of(nacosUri, "my-service");
WebClient client = WebClient.of(SessionProtocol.HTTP, group); - Use
📈 Improvements
XdsEndpointGroupnow supportsdisable_active_health_check. #5879
🛠️ Bug fixes
- DNS resolver now correctly adds search domains for hostnames with trailing dots. #5963
- CORS headers for failed requests are now correctly set even when a custom
ServerErrorHandleris configured. #5493 #5939 - Fixed a bug where
AsyncServerInterceptoris incompatible with the OpenTelemetry gRPC agent. #5937 #5938 - The GraalVM native image metadata has been updated to reflect recent code changes. #5946
- Spring Actuator correctly collects metrics when using Spring WebFlux integration. #5882 #5884
☢️ Breaking changes
- ABI compatibility of
ResponseEntity.of()has been broken. #5954
⛓ Dependencies
- Brotli4j 1.16.0 → 1.17.0
- java-control-plane 1.0.45 → 1.0.46
- Eureka 2.0.3 → 2.0.4
- GraphQL Kotlin 7.1.4 → 8.2.1
- Java gRPC 1.65.1 → 1.68.1
- Jackson 2.17.2 → 2.18.1
- Jetty
- 11.0.22 → 11.0.24
- 12.0.12 → 12.0.14
- Kotlin 3.8.0 → 3.8.1
- Kotlin coroutines 1.8.1 → 1.9.0
- Fabric8 Kubernetes Client 6.13.1 → 6.13.4
- Micrometer 1.13.2 → 1.13.6
- Micrometer Tracing 1.3.2 → 1.3.5
- Netty 4.1.112.Final → 4.1.115.Final
- prometheus 1.3.1 → 1.3.2
- Protobuf 3.25.1 → 3.25.5
- protobuf-jackson 2.5.0 → 2.6.0
- Reactor 3.6.8 → 3.6.11
- RXJava 3.1.8 → 3.1.9
- Sangria 4.1.1 → 4.2.2
- Scala
- 2.12.19 → 2.12.20
- 2.13.14 → 2.13.15
- 3.4.2 → 3.6.1
- Spring 6.1.11 → 6.1.14
- Spring Boot 3.3.2 → 3.3.5
- Tomcat
- 9.0.91 → 9.0.96
- 10.1.26 → 10.1.31
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:

















