Я использую Spring Boot 2.0.0.M1
(следовательно, Spring 5.0.0.RC1
). Я пытаюсь настроить его для использования PropertyNamingStrategy.SnakeCaseStrategy.SNAKE_CASE
но я пока не работаю.
Я пробовал:
Файл application.yml
с:
spring: jackson: property-naming-strategy: SNAKE_CASE
Настройка компонента 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 }
Настройка компонента 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
.