public class RestTemplateBuilder extends Object
RestTemplate
. Provides
convenience methods to register converters
, error handlers
and
UriTemplateHandlers
.
By default the built RestTemplate
will attempt to use the most suitable
ClientHttpRequestFactory
, call detectRequestFactory(false)
if you prefer to keep the default. In a typical
auto-configured Spring Boot application this builder is available as a bean and can be
injected whenever a RestTemplate
is needed.
Constructor and Description |
---|
RestTemplateBuilder(RestTemplateCustomizer... customizers)
Create a new
RestTemplateBuilder instance. |
public RestTemplateBuilder(RestTemplateCustomizer... customizers)
RestTemplateBuilder
instance.customizers
- any RestTemplateCustomizers
that
should be applied when the RestTemplate
is builtpublic RestTemplateBuilder detectRequestFactory(boolean detectRequestFactory)
ClientHttpRequestFactory
should be detected based on the
classpath. Default if true
.detectRequestFactory
- if the ClientHttpRequestFactory
should be
detectedpublic RestTemplateBuilder rootUri(String rootUri)
'/'
.
Since this works by adding a UriTemplateHandler
to the
RestTemplate
, the root URL will only apply when String
variants of
the RestTemplate
methods are used for specifying the request URL. See
RootUriTemplateHandler
for details.rootUri
- the root URI or null
public RestTemplateBuilder messageConverters(HttpMessageConverter<?>... messageConverters)
HttpMessageConverters
that should be used with
the RestTemplate
. Setting this value will replace any previously configured
converters and any converters configured on the builder will replace RestTemplate's
default converters.messageConverters
- the converters to setadditionalMessageConverters(HttpMessageConverter...)
public RestTemplateBuilder messageConverters(Collection<? extends HttpMessageConverter<?>> messageConverters)
HttpMessageConverters
that should be used with
the RestTemplate
. Setting this value will replace any previously configured
converters and any converters configured on the builder will replace RestTemplate's
default converters.messageConverters
- the converters to setadditionalMessageConverters(HttpMessageConverter...)
public RestTemplateBuilder additionalMessageConverters(HttpMessageConverter<?>... messageConverters)
HttpMessageConverters
that should be
used with the RestTemplate
. Any converters configured on the builder will
replace RestTemplate's default converters.messageConverters
- the converters to addmessageConverters(HttpMessageConverter...)
public RestTemplateBuilder additionalMessageConverters(Collection<? extends HttpMessageConverter<?>> messageConverters)
HttpMessageConverters
that should be
used with the RestTemplate
. Any converters configured on the builder will
replace RestTemplate's default converters.messageConverters
- the converters to addmessageConverters(HttpMessageConverter...)
public RestTemplateBuilder defaultMessageConverters()
HttpMessageConverters
that should be used with
the RestTemplate
to the default set. Calling this method will replace any
previously defined converters.messageConverters(HttpMessageConverter...)
public RestTemplateBuilder interceptors(ClientHttpRequestInterceptor... interceptors)
ClientHttpRequestInterceptors
that
should be used with the RestTemplate
. Setting this value will replace any
previously defined interceptors.interceptors
- the interceptors to setadditionalInterceptors(ClientHttpRequestInterceptor...)
public RestTemplateBuilder interceptors(Collection<ClientHttpRequestInterceptor> interceptors)
ClientHttpRequestInterceptors
that
should be used with the RestTemplate
. Setting this value will replace any
previously defined interceptors.interceptors
- the interceptors to setadditionalInterceptors(ClientHttpRequestInterceptor...)
public RestTemplateBuilder additionalInterceptors(ClientHttpRequestInterceptor... interceptors)
ClientHttpRequestInterceptors
that should be used with the RestTemplate
.interceptors
- the interceptors to addinterceptors(ClientHttpRequestInterceptor...)
public RestTemplateBuilder additionalInterceptors(Collection<? extends ClientHttpRequestInterceptor> interceptors)
ClientHttpRequestInterceptors
that should be used with the RestTemplate
.interceptors
- the interceptors to addinterceptors(ClientHttpRequestInterceptor...)
public RestTemplateBuilder requestFactory(Class<? extends ClientHttpRequestFactory> requestFactory)
ClientHttpRequestFactory
class that should be used with the
RestTemplate
.requestFactory
- the request factory to usepublic RestTemplateBuilder requestFactory(Supplier<ClientHttpRequestFactory> requestFactory)
Supplier
of ClientHttpRequestFactory
that should be called
each time we build()
a new RestTemplate
instance.requestFactory
- the supplier for the request factorypublic RestTemplateBuilder uriTemplateHandler(UriTemplateHandler uriTemplateHandler)
UriTemplateHandler
that should be used with the
RestTemplate
.uriTemplateHandler
- the URI template handler to usepublic RestTemplateBuilder errorHandler(ResponseErrorHandler errorHandler)
ResponseErrorHandler
that should be used with the
RestTemplate
.errorHandler
- the error handler to usepublic RestTemplateBuilder basicAuthentication(String username, String password)
username
- the user namepassword
- the passwordbasicAuthentication(String, String, Charset)
public RestTemplateBuilder basicAuthentication(String username, String password, Charset charset)
username
- the user namepassword
- the passwordcharset
- the charset to usepublic RestTemplateBuilder defaultHeader(String name, String... values)
HttpClientRequest
.name
- the name of the headervalues
- the header valuespublic RestTemplateBuilder setConnectTimeout(Duration connectTimeout)
ClientHttpRequestFactory
.connectTimeout
- the connection timeoutpublic RestTemplateBuilder setReadTimeout(Duration readTimeout)
ClientHttpRequestFactory
.readTimeout
- the read timeoutpublic RestTemplateBuilder setBufferRequestBody(boolean bufferRequestBody)
ClientHttpRequestFactory
should buffer the
request body internally.bufferRequestBody
- value of the bufferRequestBody parameterSimpleClientHttpRequestFactory.setBufferRequestBody(boolean)
,
HttpComponentsClientHttpRequestFactory.setBufferRequestBody(boolean)
public RestTemplateBuilder customizers(RestTemplateCustomizer... customizers)
RestTemplateCustomizers
that should be
applied to the RestTemplate
. Customizers are applied in the order that they
were added after builder configuration has been applied. Setting this value will
replace any previously configured customizers.customizers
- the customizers to setadditionalCustomizers(RestTemplateCustomizer...)
public RestTemplateBuilder customizers(Collection<? extends RestTemplateCustomizer> customizers)
RestTemplateCustomizers
that should be
applied to the RestTemplate
. Customizers are applied in the order that they
were added after builder configuration has been applied. Setting this value will
replace any previously configured customizers.customizers
- the customizers to setadditionalCustomizers(RestTemplateCustomizer...)
public RestTemplateBuilder additionalCustomizers(RestTemplateCustomizer... customizers)
RestTemplateCustomizers
that should be applied
to the RestTemplate
. Customizers are applied in the order that they were
added after builder configuration has been applied.customizers
- the customizers to addcustomizers(RestTemplateCustomizer...)
public RestTemplateBuilder additionalCustomizers(Collection<? extends RestTemplateCustomizer> customizers)
RestTemplateCustomizers
that should be applied
to the RestTemplate
. Customizers are applied in the order that they were
added after builder configuration has been applied.customizers
- the customizers to addcustomizers(RestTemplateCustomizer...)
public RestTemplateBuilder requestCustomizers(RestTemplateRequestCustomizer<?>... requestCustomizers)
RestTemplateRequestCustomizers
that
should be applied to the ClientHttpRequest
. Customizers are applied in the
order that they were added. Setting this value will replace any previously
configured request customizers.requestCustomizers
- the request customizers to setadditionalRequestCustomizers(RestTemplateRequestCustomizer...)
public RestTemplateBuilder requestCustomizers(Collection<? extends RestTemplateRequestCustomizer<?>> requestCustomizers)
RestTemplateRequestCustomizers
that
should be applied to the ClientHttpRequest
. Customizers are applied in the
order that they were added. Setting this value will replace any previously
configured request customizers.requestCustomizers
- the request customizers to setadditionalRequestCustomizers(RestTemplateRequestCustomizer...)
public RestTemplateBuilder additionalRequestCustomizers(RestTemplateRequestCustomizer<?>... requestCustomizers)
RestTemplateRequestCustomizers
that
should be applied to the ClientHttpRequest
. Customizers are applied in the
order that they were added.requestCustomizers
- the request customizers to addrequestCustomizers(RestTemplateRequestCustomizer...)
public RestTemplateBuilder additionalRequestCustomizers(Collection<? extends RestTemplateRequestCustomizer<?>> requestCustomizers)
RestTemplateRequestCustomizers
that
should be applied to the ClientHttpRequest
. Customizers are applied in the
order that they were added.requestCustomizers
- the request customizers to addrequestCustomizers(Collection)
public RestTemplate build()
RestTemplate
instance and configure it using this builder.RestTemplate
instance.build(Class)
,
configure(RestTemplate)
public <T extends RestTemplate> T build(Class<T> restTemplateClass)
RestTemplate
instance of the specified type and configure it
using this builder.T
- the type of rest templaterestTemplateClass
- the template type to createRestTemplate
instance.build()
,
configure(RestTemplate)
public <T extends RestTemplate> T configure(T restTemplate)
RestTemplate
instance using this builder.T
- the type of rest templaterestTemplate
- the RestTemplate
to configurebuild()
,
build(Class)
public ClientHttpRequestFactory buildRequestFactory()
ClientHttpRequestFactory
instance using the settings of this
builder.ClientHttpRequestFactory
or null