Определите пользовательский объектный картограф Джексона для проекта Spring3 MVC - PullRequest
2 голосов
/ 10 марта 2011

Я использую mvc: annotation-based, что означало, что я просто помещал файлы jar Джексона на путь к классу, чтобы сконфигурировать Jackson json marhsaller.Теперь я хотел бы предоставить собственный объектный сопоставитель, чтобы иметь возможность управлять сериализацией полей Date на глобальном уровне.

Я начал определять AnnotationMethodhandlerAdapter и сослался на свой собственный bean-компонент jsonConverter (см. Ниже)

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="jsonConverter" />
            <ref bean="xmlMarshallingConverter" />
        </list>
    </property>
</bean>

Проблема в том, что даты по-прежнему записываются как временные метки.Создается пользовательский bean-объект objectmapper (для этого есть логи), но он видит, что objectmapper никогда не используется.Я предполагаю, что он все еще использует MappingJacksonHttpMessageConverter по умолчанию и ObjectMapper по умолчанию.

Есть идеи?Как бы я выяснил, какие именно bean-компоненты следует переписать, чтобы изменить отображение по умолчанию?

Спасибо!

1 Ответ

0 голосов
/ 14 марта 2011

Вы сконфигурировали распознаватель представлений так, чтобы он также использовал ваш пользовательский экземпляр сопоставителя объектов (см. Ссылку на jacksonObjectMapper ниже)?

Насколько я понимаю, AnnotationMethodHandlerAdapter обрабатывает входящие преобразования, а ContentNegotiatingViewResolver обрабатывает исходящие преобразования.

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="mediaTypes">
        <map>
            <entry key="json" value="application/json"/>
            <!-- xml etc -->
        </map>
    </property>
    <property name="defaultViews">
        <list>
            <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
                <property name="objectMapper" ref="jacksonObjectMapper"/>
            </bean>
            <!-- xml etc -->
        </list>
    </property>
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...