diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfiguration.java index aa924f63199..aab9c2913d5 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfiguration.java @@ -24,6 +24,7 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -113,6 +114,7 @@ public class HttpMessageConvertersAutoConfiguration { @Configuration @ConditionalOnClass(Gson.class) + @ConditionalOnMissingClass(name = "com.fasterxml.jackson.core.JsonGenerator") @ConditionalOnBean(Gson.class) protected static class GsonHttpMessageConverterConfiguration { diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfigurationTests.java index 8c9ec03593d..12efcdb4793 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/HttpMessageConvertersAutoConfigurationTests.java @@ -121,10 +121,9 @@ public class HttpMessageConvertersAutoConfigurationTests { this.context.register(GsonConfig.class, HttpMessageConvertersAutoConfiguration.class); this.context.refresh(); - assertConverterBeanExists(GsonHttpMessageConverter.class, - "gsonHttpMessageConverter"); - - assertConverterBeanRegisteredWithHttpMessageConverters(GsonHttpMessageConverter.class); + // Shouldn't be registered because we have Jackson + assertEquals(0, this.context.getBeansOfType(GsonHttpMessageConverter.class) + .size()); } @Test @@ -165,8 +164,7 @@ public class HttpMessageConvertersAutoConfigurationTests { this.context.refresh(); MappingJackson2HttpMessageConverter converter = this.context .getBean(MappingJackson2HttpMessageConverter.class); - assertNull(new DirectFieldAccessor(converter) - .getPropertyValue("prettyPrint")); + assertNull(new DirectFieldAccessor(converter).getPropertyValue("prettyPrint")); } @Test @@ -189,7 +187,6 @@ public class HttpMessageConvertersAutoConfigurationTests { } private void assertConverterBeanRegisteredWithHttpMessageConverters(Class type) { - Object converter = this.context.getBean(type); HttpMessageConverters converters = this.context .getBean(HttpMessageConverters.class);