0

私の理解では、Spring MVC にはJackson JSONライブラリのバージョン/依存関係が付属しています。私は FlexJSON が本当に好き/好きで、代わりにFlexJSONを使用するように Spring を構成できるかどうか疑問に思っていました。

4

1 に答える 1

2

HttpMessageConverterハンドル メソッドにアノテーションを付けるとき、@ResponseBodyまたはオブジェクトを返すときに、Spring は を使用して応答を生成し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 は必要なカスタムHttpMessageConverterBean またはインスタンスを登録します。

したがって、解決策は、独自のものを実装しflexjsonて登録することです。登録は、実行している構成の種類によって異なりますが、それぞれにリソースがあります。

于 2013-12-26T16:51:30.810 に答える