From 8ac29c8ce7055e1421ba5995ebb44f0aecc92223 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Thu, 22 Jun 2017 18:00:11 +0200 Subject: [PATCH] Add cloneBuilder method on WebClient.Builder This commit adds a new `cloneBuilder()` method on `WebClient.Builder`; we can now reuse the customizations of an existing builder without sharing its state across several `WebClient` building code paths. Issue: SPR-15690 --- .../reactive/function/client/DefaultWebClientBuilder.java | 5 +++++ .../web/reactive/function/client/WebClient.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java index 5bef1ae576a..043129d111d 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java @@ -92,6 +92,11 @@ class DefaultWebClientBuilder implements WebClient.Builder { return this; } + @Override + public WebClient.Builder cloneBuilder() { + return new DefaultWebClientBuilder(this); + } + @Override public WebClient.Builder defaultUriVariables(Map defaultUriVariables) { this.defaultUriVariables = defaultUriVariables; diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClient.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClient.java index d77c352284a..328342641c9 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClient.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClient.java @@ -192,6 +192,11 @@ public interface WebClient { */ Builder baseUrl(String baseUrl); + /** + * Clone this {@code WebClient.Builder} + */ + Builder cloneBuilder(); + /** * Configure default URI variable values that will be used when expanding * URI templates using a {@link Map}.