jackson2ObjectMapperBuilder

jackson2ObjectMapperBuilder

使用Spring Boot 1.2.2创建一个Spring MVC应用程序。我也在使用Spring HATEOAS。

我遇到的问题是,当我的控制器方法返回List<>时,正确使用了配置的ObjectMapper,但是当我返回Resource类(例如,MyClass extends ResourceSupport)时,正在使用不同的ObjectMapper。

尝试configure Jackson's ObjectMapper有点令人沮丧。我已经按照文档进行操作,并将自己的ObjectMapper @Bean添加到@Configuration类中,并用@Primary对其进行了注释,并且在序列化List<>时正在使用该类。

在ObjectMapper构造函数的断点上设置一个断点可以发现该构造函数被调用了大约20次。我对每种情况都做了很差的总结:

  • 我的配置类(用@Bean注释的@Primary)
  • halObjectMapper
  • WebMvcConfigurationSupport-> requestMappingHandlerAdapter()-> AllEncompassingFormHttpMessageConverter-> Jackson2ObjectMapperBuilder
  • configureMessageConverters()-> Jackson2ObjectMapperBuilder
  • 可能是RegisterModule()-> Jackson2ObjectMapperBuilder
  • WebMvcConfigurationSupport-> addDefaultHandlerExceptionResolver()-> AllEncompassingFormHttpMessageConverter-> Jackson2ObjectMapperBuilder
  • 2次:WebMvcConfigurationSupport-> addDefaultHttpMessageConverters()-> AllEncompassingFormHttpMessageConverter-> Jackson2ObjectMapperBuilder
  • 12次:EndpointMBeanExporter(Spring Boot执行器)
  • 最佳答案

    我建议使用application.properties配置Jackson,或者,如果需要更多控制,则声明自己的Jackson2ObjectMapperBuilder bean。无论哪种情况,最终在应用程序上下文中都有一个Jackson2ObjectMapperBuilder bean,然后其他组件可以使用它来创建具有所需配置的ObjectMapper或将该配置应用于任何现有的ObjectMapper

    编辑:打开an issue可以提高执行器的ObjectMapper的使用率。

    10-06 12:36