我的理解是 Spring MVC 附带了Jackson JSON库的版本/依赖项。我真的很喜欢/更喜欢 FlexJSON,并且想知道是否可以将 Spring 配置为使用FlexJSON,如果可以,如何?
问问题
1072 次
1 回答
2
当您使用或返回对象时注释您的句柄方法时, Spring 使用HttpMessageConverter
来生成响应。@ResponseBody
ResponseEntity
当 Spring 设置您的 MVC 配置时,它会注册许多HttpMessageConverter
实现,其中包括Jackson
实现,MappingJackson2HttpMessageConverter
. 它在WebMvcConfigurationSupport
课堂上执行此操作(Spring MVC 3.1+)
@SuppressWarnings("deprecation")
protected final void addDefaultHttpMessageConverters(List<HttpMessageConverter<?>> messageConverters) {
StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
stringConverter.setWriteAcceptCharset(false);
messageConverters.add(new ByteArrayHttpMessageConverter());
messageConverters.add(stringConverter);
messageConverters.add(new ResourceHttpMessageConverter());
messageConverters.add(new SourceHttpMessageConverter<Source>());
messageConverters.add(new AllEncompassingFormHttpMessageConverter());
if (romePresent) {
messageConverters.add(new AtomFeedHttpMessageConverter());
messageConverters.add(new RssChannelHttpMessageConverter());
}
if (jaxb2Present) {
messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
}
if (jackson2Present) {
messageConverters.add(new MappingJackson2HttpMessageConverter());
}
else if (jacksonPresent) {
messageConverters.add(new org.springframework.http.converter.json.MappingJacksonHttpMessageConverter());
}
}
这些被注册为默认值。在此之前,Spring 会注册HttpMessageConverter
您可能需要的任何自定义 bean 或实例。
所以解决方案是实现你自己的flexjson
并注册它。注册取决于您正在执行的配置类型,但每种配置都有相应的资源。
于 2013-12-26T16:51:30.810 回答