Learn to use
RestTemplateBuilder
to create or build RestTemplate
class which can be used to send HTTP requests.1) Default RestTemplateBuilder
To inject
RestTemplateBuilder
, pass it as constructor argument in your service class.@Service public class MyService { private final RestTemplate restTemplate; public MyService(RestTemplateBuilder restTemplateBuilder) { this .restTemplate = restTemplateBuilder.build(); } public Details someRestCall(String name) { return this .restTemplate.getForObject( "/{name}/details" , Details. class , name); } } |
2) Custom RestTemplateBuilder
To create custom
RestTemplateBuilder
, create @Bean
of type RestTemplateBuilder
in Spring context.RestTemplateBuilder Bean
@Configuration public class RestTemplateConfig { @Bean @DependsOn (value = { "customRestTemplateBuilder" }) public RestTemplateBuilder restTemplateBuilder() { return new RestTemplateBuilder(customRestTemplateCustomizer()); } @Bean public CustomRestTemplateCustomizer customRestTemplateCustomizer() { return new CustomRestTemplateCustomizer(); } } |
RestTemplateCustomizer Bean
Create custom
RestTemplateCustomizer
as per your requirements.public class CustomRestTemplateCustomizer implements RestTemplateCustomizer { @Override public void customize(RestTemplate restTemplate) { restTemplate.setRequestFactory( new BufferingClientHttpRequestFactory(clientHttpRequestFactory()) ); restTemplate.setMessageConverters(Collections.singletonList(mappingJacksonHttpMessageConverter())); restTemplate.setInterceptors(Collections.singletonList( new RequestResponseLoggingInterceptor())); } } |
Inject custom RestTemplateBuilder
And inject this custom
RestTemplateBuilder
to your service class as given in first section i.e. similar to default RestTemplateBuilder
.@Service public class MyService { private final RestTemplate restTemplate; public MyService(RestTemplateBuilder restTemplateBuilder) { this .restTemplate = restTemplateBuilder.build(); } } |
Drop me your questions in comments section.
No comments:
Post a Comment