Spring-Boot 1.4.2参考声明:
spring.http.converters.preferred-json-mapper = jackson#用于HTTP消息转换的首选JSON映射器.设置为"gson"以强制使用Gson
我们做到了.
但仍然使用杰克逊.
最后,我们设法强制Spring-Boot在排除Maven中指向Jackson的所有传递依赖之后使用Gson.
现在的问题是.这是迫使Spring-Boot使用Gson而不是Jackson的唯一方法吗?我们真的需要排除指向杰克逊的所有传递依赖吗?首选的json-mapper设置还不够?
小智 10
嗯,WebMvcConfigurerAdapter已弃用。从Spring 5.0 开始,请执行以下操作:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Bean
public Gson gson() {
GsonBuilder b = new GsonBuilder();
b.registerTypeAdapterFactory(HibernateProxyTypeAdapter.FACTORY);
b.registerTypeAdapterFactory(DateTypeAdapter.FACTORY);
b.registerTypeAdapterFactory(TimestampTypeAdapter.FACTORY);
b.registerTypeAdapterFactory(LocalDateTypeAdapter.FACTORY);
b.registerTypeAdapterFactory(LocalDateTimeTypeAdapter.FACTORY);
return b.create();
}
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
stringConverter.setWriteAcceptCharset(false);
stringConverter.setSupportedMediaTypes(Collections
.singletonList(MediaType.TEXT_PLAIN));
converters.add(stringConverter);
converters.add(new ByteArrayHttpMessageConverter());
converters.add(new SourceHttpMessageConverter<>());
GsonHttpMessageConverter gsonHttpMessageConverter = new GsonHttpMessageConverter();
gsonHttpMessageConverter.setGson(gson());
gsonHttpMessageConverter.setSupportedMediaTypes(Arrays
.asList(MediaType.APPLICATION_JSON));
converters.add(gsonHttpMessageConverter);
}
}
Run Code Online (Sandbox Code Playgroud)
发生在 Spring Boot 使用的旧 *.xml 配置的一部分中,我们有<mvc:annotation-driven/>.
它导致使用没有 GsonHttpMessageConverter 的默认转换器第二次创建 RequestMappingHandlerAdapter 。
| 归档时间: |
|
| 查看次数: |
6906 次 |
| 最近记录: |