你没有说你在spring如何使用Jackson,所以我假设你通过<mvc:annotation-driven/>
和@RequestBody
和/或@ResponseBody
注解使用它。
要做的事情之一<mvc:annotation-driven/>
是注册一个AnnotationMethodHandlerAdapter
带有许多预配置HttpMessageConverterBean
的Bean,包括MappingJacksonHttpMessageConverter
,该Bean 处理来往于Jackson注释的模型类之间的编组。
现在MappingJacksonHttpMessageConverter
有了一个setObjectMapper()
方法,可以让你覆盖默认值ObjectMapper。但是由于MappingJacksonHttpMessageConverter
是由幕后创建的<mvc:annotation-driven/>
,因此你无法实现。
但是,<mvc:annotation-driven/>
这只是一个便捷的捷径。声明自己的AnnotationMethodHandlerAdapterbean
,将自己的bean注入MappingJacksonHttpMessageConverter
(通过messageConverters
属性)并注入自己的自定义ObjectMapper变量同样有效。
然后,你将面临如何构建自定义的问题ObjectMapper
,因为它不是一个非常适合Spring的类。我建议编写自己的简单实现factorybean。
因此,你最终会得到如下结果:
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper">
<bean class="com.x.MyObjectMapperfactorybean"/>
</property>
</bean>
</property>
</bean>