2

SpringアプリケーションでJacksonを構成するのに苦労しています。動作させることはできますが、どのような構成も受け入れないようです。基本的に私が達成しようとしているのは、Spring形式のアノテーションをスキャンするObjectMapperを用意することです。

私が試しているのはこれです:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <bean
                class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                <property name="objectMapper" ref="jacksonObjectMapper" />
            </bean>
        </list>
    </property>
</bean>

<bean id="jacksonObjectMapper" class="ro.softwin.cnfp.ConversionServiceAwareObjectMapper" />

<bean
    class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="mediaTypes">
        <map>
            <entry key="json" value="application/json" />
            <entry key="html" value="text/html" />
        </map>
    </property>
    <property name="viewResolvers">
        <list>
            <bean
                class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="viewClass"
                    value="org.springframework.web.servlet.view.JstlView" />
                <property name="prefix" value="/jsp/" />
                <property name="suffix" value=".jsp" />
            </bean>
        </list>
    </property>
    <property name="defaultViews">
        <list>
            <bean
                class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
                <property name="prefixJson" value="false" />
                <property name="objectMapper" value="jacksonObjectMapper" />
            </bean>
        </list>
    </property>
</bean>

マッパーのコードは次のとおりです。

public class ConversionServiceAwareObjectMapper extends ObjectMapper {
@Autowired
public ConversionServiceAwareObjectMapper(
        ConversionService conversionService) {
    AnnotationIntrospector introspector = AnnotationIntrospector.pair(
            new FormatAnnotationIntrospector(conversionService),
            DEFAULT_ANNOTATION_INTROSPECTOR);

    this.setDeserializationConfig(this.getDeserializationConfig()
            .withAnnotationIntrospector(introspector));
    this.setSerializationConfig(this.getSerializationConfig()
            .withAnnotationIntrospector(introspector).withSerializationInclusion(JsonSerialize.Inclusion.NON_NULL));

}

}

サーバーを初期化すると、次のエラーが発生します。

java.lang.IllegalStateException:プロパティ'objectMapper'のタイプ[java.lang.String]の値を必須タイプ[org.codehaus.jackson.map.ObjectMapper]に変換できません:org.springframeworkに一致するエディターまたは変換戦略が見つかりません。 org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:470)のbeans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:241)...55詳細

通常のビューリゾルバーに切り替えて、AnnotationMethodHandlerにオブジェクトマッパーを入れてみました。これはサーバーの起動に関しては機能しますが、構成を完全に無視します。

私は次に何をすべきかについて完全に途方に暮れています。

助けてくれてありがとう。

4

1 に答える 1

1

アップデート :

<property name="objectMapper" value="jacksonObjectMapper" />

と:

<property name="objectMapper" ref="jacksonObjectMapper" />

refは値ではありません。

于 2012-07-09T11:21:18.600 に答える