4747import org .springframework .http .converter .json .MappingJackson2HttpMessageConverter ;
4848import org .springframework .http .converter .support .AllEncompassingFormHttpMessageConverter ;
4949import org .springframework .http .converter .xml .Jaxb2RootElementHttpMessageConverter ;
50+ import org .springframework .http .converter .xml .MappingJackson2XmlHttpMessageConverter ;
5051import org .springframework .http .converter .xml .SourceHttpMessageConverter ;
5152import org .springframework .util .Assert ;
5253import org .springframework .util .ClassUtils ;
@@ -122,6 +123,9 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
122123 ClassUtils .isPresent ("com.fasterxml.jackson.databind.ObjectMapper" , RestTemplate .class .getClassLoader ()) &&
123124 ClassUtils .isPresent ("com.fasterxml.jackson.core.JsonGenerator" , RestTemplate .class .getClassLoader ());
124125
126+ private static final boolean jackson2XmlPresent =
127+ ClassUtils .isPresent ("com.fasterxml.jackson.dataformat.xml.XmlMapper" , RestTemplate .class .getClassLoader ());
128+
125129 private static final boolean gsonPresent =
126130 ClassUtils .isPresent ("com.google.gson.Gson" , RestTemplate .class .getClassLoader ());
127131
@@ -148,7 +152,10 @@ public RestTemplate() {
148152 this .messageConverters .add (new AtomFeedHttpMessageConverter ());
149153 this .messageConverters .add (new RssChannelHttpMessageConverter ());
150154 }
151- if (jaxb2Present ) {
155+ if (jackson2XmlPresent ) {
156+ messageConverters .add (new MappingJackson2XmlHttpMessageConverter ());
157+ }
158+ else if (jaxb2Present ) {
152159 this .messageConverters .add (new Jaxb2RootElementHttpMessageConverter ());
153160 }
154161 if (jackson2Present ) {
0 commit comments