diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/HttpMessageConverters.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/HttpMessageConverters.java index ef903d4806d..ac52b71fd98 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/HttpMessageConverters.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/HttpMessageConverters.java @@ -75,15 +75,7 @@ public class HttpMessageConverters implements Iterable> public HttpMessageConverters(Collection> additionalConverters) { List> converters = new ArrayList>(); List> defaultConverters = getDefaultConverters(); - for (HttpMessageConverter converter : additionalConverters) { - int defaultConverterIndex = indexOfItemClass(defaultConverters, converter); - if (defaultConverterIndex == -1) { - converters.add(converter); - } - else { - defaultConverters.set(defaultConverterIndex, converter); - } - } + converters.addAll(additionalConverters); converters.addAll(defaultConverters); this.converters = Collections.unmodifiableList(converters); } @@ -120,16 +112,6 @@ public class HttpMessageConverters implements Iterable> converters.addAll(xml); } - private int indexOfItemClass(List list, E item) { - Class itemClass = item.getClass(); - for (int i = 0; i < list.size(); i++) { - if (list.get(i).getClass().isAssignableFrom(itemClass)) { - return i; - } - } - return -1; - } - @Override public Iterator> iterator() { return getConverters().iterator(); diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersTests.java index 0d26af9144c..49ad34abf80 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersTests.java @@ -69,6 +69,15 @@ public class HttpMessageConvertersTests { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); HttpMessageConverters converters = new HttpMessageConverters(converter); assertTrue(converters.getConverters().contains(converter)); + int count = 0; + for (HttpMessageConverter httpMessageConverter : converters) { + if (httpMessageConverter instanceof MappingJackson2HttpMessageConverter) { + count++; + } + } + // The existing converter is still there, but with a lower priority + assertEquals(2, count); + assertEquals(0, converters.getConverters().indexOf(converter)); } @Test