Configure Jackson para usar SNAKE_CASE "globalmente" en Spring Boot 2.0.0.M1

Estoy usando Spring Boot 2.0.0.M1 (de ahí Spring 5.0.0.RC1 ). Estoy tratando de configurarlo para hacer uso de PropertyNamingStrategy.SnakeCaseStrategy.SNAKE_CASE pero no funciona hasta ahora.

He intentado:

  1. El file application.yml con:

     spring: jackson: property-naming-strategy: SNAKE_CASE 
  2. Configurando un bean Jackson2ObjectMapperBuilder :

     @Bean @Primary open fun jacksonBuilder(): Jackson2ObjectMapperBuilder { val jacksonMapperBuilder = Jackson2ObjectMapperBuilder() .failOnUnknownProperties(false) .modules(JavaTimeModule(), KotlinModule()) .propertyNamingStrategy(PropertyNamingStrategy.SnakeCaseStrategy.SNAKE_CASE) logger.info { "Jackson2ObjectMapperBuilder configunetworking successfully..." } return jacksonMapperBuilder } 
  3. Configurando un bean ObjectMapper :

     @Bean @Primary open fun objectMapper(): ObjectMapper { val objectMapper = ObjectMapper() objectMapper.registerModule(JavaTimeModule()) objectMapper.registerModule(KotlinModule()) objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SnakeCaseStrategy.SNAKE_CASE) logger.info { "ObjectMapper configunetworking successfully..." } return objectMapper } 

La única forma que he encontrado para hacerlo funcionar anotando cada class con @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class) … pero esa no es una solución para mi caso.

¿Alguna otra opción?


Esta es la sección " dependencies " en mi file build.gradle.kts :

 dependencies { compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") compile("com.fasterxml.jackson.module:jackson-module-kotlin") compile("io.github.microutils:kotlin-logging:1.4.4") //compile("io.projectreactor:reactor-kotlin-extensions") compile("org.springframework.boot:spring-boot-starter-actuator") compile("org.springframework.boot:spring-boot-starter-data-mongodb-reactive") compile("org.springframework.boot:spring-boot-starter-webflux") compile(kotlin("stdlib")) testCompile("io.projectreactor.addons:reactor-test") testCompile("org.springframework.boot:spring-boot-starter-test") } 

ACTUALIZAR:

Esto fue de hecho fijo en M3 ; si necesita SnakeCaseStrategy.SNAKE_CASE las configuraciones en application.yml son suficientes.

Como dice la documentation del module Web-Flux :

El module de spring-core proporciona contratos reactivos de Encoder y Decoder que permiten la serialization de un Flux de bytes desde y hacia objects tipados.

Aparentemente, el ObjectMapper configurado automáticamente por JacksonAutoConfiguration no será recogido por WebFluxAutoConfiguration y WebFluxConfigurationSupport al configurar una instancia de Jackson2JsonEncoder . Este problema ya se informó aquí y actualmente está planificado para el hito M3 .