Spring Boot和ObjectMapper配置

时间:2015-03-24 18:39:21

标签: java spring spring-boot

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

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

尝试configure Jackson's ObjectMapper会让人感到有点沮丧。我已按照文档将自己的MyClass extends ResourceSupport ObjectMapper添加到@Bean类,并使用@Configuration对其进行了注释,并在序列化@Primary时使用了该类

在ObjectMapper构造函数断点中设置断点会显示构造函数被调用大约20次。我对每个场景做了很糟糕的总结:

  1. 我的配置类(List<>注释为@Bean
  2. halObjectMapper
  3. WebMvcConfigurationSupport-&GT; requestMappingHandlerAdapter() - &GT; AllEncompassingFormHttpMessageConverter-&GT; Jackson2ObjectMapperBuilder
  4. configureMessageConverters() - &GT; Jackson2ObjectMapperBuilder
  5. potentiallyRegisterModule() - &GT; Jackson2ObjectMapperBuilder
  6. WebMvcConfigurationSupport-&GT; addDefaultHandlerExceptionResolver() - &GT; AllEncompassingFormHttpMessageConverter-&GT; Jackson2ObjectMapperBuilder
  7. 2次:WebMvcConfigurationSupport-&gt; addDefaultHttpMessageConverters() - &gt; AllEncompassingFormHttpMessageConverter-&gt; Jackson2ObjectMapperBuilder
  8. 12次:EndpointMBeanExporter(Spring Boot Actuator)

2 个答案:

答案 0 :(得分:1)

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

编辑:an issue已开启以提高执行者ObjectMapper的使用率。

答案 1 :(得分:0)

您可以使用弹簧靴application.properties配置Jackson。

请参阅课程org.springframework.boot.autoconfigure.jackson.JacksonProperties 或使用Spring Tool Suite,只需编辑您的application.properties, 开始输入spring.jackson.,然后点击Ctrl-Space以查看可用的属性。