您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Spring, Jackson and Customization (e.g. CustomDeserializer)

Spring, Jackson and Customization (e.g. CustomDeserializer)

你没有说你在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>
Java 2022/1/1 18:15:50 有410人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶