为spring 3 mvc项目定义自定义jackson objectmapper

时间:2011-03-10 13:36:51

标签: json spring jackson

我正在使用mvc:annotation-driven,这意味着只需将jackson jar文件放入配置Jackson json marhsaller的类路径中。现在我想提供一个自定义对象映射器,以便能够在全局级别上控制Date字段的序列化。

我开始定义AnnotationMethodhandlerAdapter并引用我自己的jsonConverter bean(见下文)

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

     

问题是日期仍然写为时间戳。创建自定义objectmapper bean(获取日志),但它看起来从未使用过objectmapper。我假设它仍然使用默认的MappingJacksonHttpMessageConverter和默认的ObjectMapper。

有什么想法吗?我如何找出要覆盖默认映射器的确切bean?

感谢名单!

1 个答案:

答案 0 :(得分:0)

您是否已将视图解析器配置为也使用自定义对象映射器实例(请参阅下面的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>