package com.integralblue.callerid.inject; import java.util.Iterator; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.client.RestTemplate; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.name.Named; public class RestTemplateProvider implements Provider<RestTemplate> { @Inject @Named("jsonObjectMapper") ObjectMapper jsonObjectMapper; public RestTemplate get() { final RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory()); //remove the existing MappingJacksonHttpMessageConverter - we're going to be using our own final Iterator<HttpMessageConverter<?>> iterator = restTemplate.getMessageConverters().iterator(); while(iterator.hasNext()){ final HttpMessageConverter<?> converter = iterator.next(); if(converter instanceof MappingJackson2HttpMessageConverter){ iterator.remove(); } } //handle json data final MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter(); jsonConverter.setObjectMapper(jsonObjectMapper); restTemplate.getMessageConverters().add(0,jsonConverter); return restTemplate; } }