From be78dc4b9966b761ebd9ed4e92c3759408bc906f Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 1 Nov 2016 11:06:38 +0000 Subject: [PATCH] Flesh out the documentation on RestTemplateBuilder customization Closes gh-7054 --- .../main/asciidoc/spring-boot-features.adoc | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc index 4e54a8e916b..f66fbe65c04 100644 --- a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc +++ b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc @@ -4546,11 +4546,17 @@ configure a `RestTemplate`. For example, to add BASIC auth support you can use [[boot-features-restclient-customization]] === RestTemplate customization -When a `RestTemplateBuilder` builds a `RestTemplate` it can be further customized using -a `RestTemplateCustomizer`. Any `RestTemplateCustomizer` beans will be automatically -added to the auto-configured `RestTemplateBuilder`. Furthermore, a new -`RestTemplateBuilder` with additional customizers can be created by calling -`additionalCustomizers(RestTemplateCustomizer...)`. +There are three main approaches to `RestTemplate` customization, depending on how broadly +to want the customizations to apply. + +To make the scope of any customizations as narrow as possible, inject the auto-configured +`RestTemplateBuilder` and then calls its methods as required. Each method call returns a +new `RestTemplateBuilder` instance so the customizations will only affect this use of +the builder. + +To make a application-wide, additive customization a `RestTemplateCustomizer` bean can be +used. All such beans are automatically registered with the auto-configured +`RestTemplateBuilder` and will be applied to any templates that are built with it. Here's an example of a customizer that configures the use of a proxy for all hosts except `192.168.0.5`: @@ -4560,6 +4566,10 @@ Here's an example of a customizer that configures the use of a proxy for all hos include::{code-examples}/web/client/RestTemplateProxyCustomizationExample.java[tag=customizer] ---- +Lastly, the most extreme (and rarely used) option is to create your own +`RestTemplateBuilder` bean. This will switch off the auto-configuration of a +`RestTemplateBuilder` and will prevent any `RestTemplateCustomizer` beans from being used. + [[boot-features-email]]