Настройка Jackson для использования SNAKE_CASE «глобально» в Spring Boot 2.0.0.M1

Я использую Spring Boot 2.0.0.M1 (следовательно, Spring 5.0.0.RC1 ). Я пытаюсь настроить его для использования PropertyNamingStrategy.SnakeCaseStrategy.SNAKE_CASE но я пока не работаю.

Я пробовал:

  1. Файл application.yml с:

     spring: jackson: property-naming-strategy: SNAKE_CASE 
  2. Настройка компонента Jackson2ObjectMapperBuilder :

     @Bean @Primary open fun jacksonBuilder(): Jackson2ObjectMapperBuilder { val jacksonMapperBuilder = Jackson2ObjectMapperBuilder() .failOnUnknownProperties(false) .modules(JavaTimeModule(), KotlinModule()) .propertyNamingStrategy(PropertyNamingStrategy.SnakeCaseStrategy.SNAKE_CASE) logger.info { "Jackson2ObjectMapperBuilder configured successfully..." } return jacksonMapperBuilder } 
  3. Настройка компонента 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 configured successfully..." } return objectMapper } 

Единственный способ, с помощью которого я смог заставить его работать, аннотируя каждый класс классом @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class) но это не решение для моего дела.

Любые другие варианты?


Это раздел « dependencies » в файле 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") } 

ОБНОВИТЬ:

Это действительно было зафиксировано на M3 ; если вам нужна SnakeCaseStrategy.SNAKE_CASE то настройки (ы) в application.yml достаточно.

Как говорится в документации модуля Web-Flux :

Модуль с spring-core обеспечивает реактивные контракты Encoder и Decoder которые позволяют сериализовать Flux байтов в и из типизированных объектов.

Очевидно, автоматически настроенный WebFluxAutoConfiguration WebFluxConfigurationSupport by WebFluxAutoConfiguration не будет выбран WebFluxAutoConfiguration и WebFluxConfigurationSupport при настройке экземпляра Jackson2JsonEncoder . Этот вопрос уже представлен здесь и в настоящее время запланирован для этапа M3 .

Intereting Posts