如何在Spring Boot中注册和使用jackson AfterburnerModule?

das*_*ing 4 java spring jackson jackson-modules spring-boot

我正在使用SpringBoot 1.5.9,Jackson 2.8和Spring Framework 4.3.13。

我正在尝试注册和使用AfterburnerModel。

根据Spring Boot文档,要配置ObjectMapper,您可以自己定义bean并用@Bean和@Primary对其进行注释。在bean中,您可以注册一个模块。或者,您可以添加类型为Jackson2ObjectMapperBuilder的bean,在其中可以通过添加模块来自定义ObjectMapper。

我尝试了两种方式,并且在序列化期间,杰克逊模块加力燃烧器中没有断点。我的自定义设置已被阅读,但似乎被忽略了。

Kar*_*cki 5

默认情况下,Spring MVC MappingJackson2HttpMessageConverterObjectMapper使用默认选项创建它自己的Jackson2ObjectMapperBuilder。根据Spring Boot docs 76.3自定义Jackson ObjectMapper章节:

任何类型为com.fasterxml.jackson.databind.Module的bean都会自动注册到自动配置的Jackson2ObjectMapperBuilder中,并应用于它创建的任何ObjectMapper实例。当您向应用程序中添加新功能时,这提供了一种用于贡献自定义模块的全局机制。

因此将模块注册为Bean应该足够了:

@Bean
public AfterburnerModule afterburnerModule() {
  return new AfterburnerModule();
}
Run Code Online (Sandbox Code Playgroud)

可以使用@Configuration类来自定义更详细的设置MappingJackson2HttpMessageConverter

@Configuration
public class MyMvcConf extends WebMvcConfigurationSupport {

  protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    converters.add(myConverter());
    addDefaultHttpMessageConverters(converters);
  }

  @Bean
  public MappingJackson2HttpMessageConverter myConverter() {
    return new MappingJackson2HttpMessageConverter(myObjectMapper())
  }

  @Bean
  public ObjectMapper myObjectMapper() {
    return new ObjectMapper().registerModule(new AfterburnerModule());
  }

}
Run Code Online (Sandbox Code Playgroud)