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.@Servicepublic 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
@Configurationpublic 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.@Servicepublic 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