0

我的理解是 Spring MVC 附带了Jackson JSON库的版本/依赖项。我真的很喜欢/更喜欢 FlexJSON,并且想知道是否可以将 Spring 配置为使用FlexJSON,如果可以,如何?

4

1 回答 1

2

当您使用或返回对象时注释您的句柄方法时, Spring 使用HttpMessageConverter来生成响应。@ResponseBodyResponseEntity

当 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 回答