Only use Gson if Jackson is missing
Update HttpMessageConvertersAutoConfiguration to only register Gson support when Jackson is not on the classpath. Fixes gh-1967
This commit is contained in:
@@ -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 {
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user