我正在使用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?
感谢名单!
答案 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>