在Spring Boot 2.0.0.M1中将Jackson配置为“全局”使用SNAKE_CASE
我使用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:@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:@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)
注释每个类来实现它的唯一方法…但这不是我的情况的解决方案。
任何其他选项?
这是我build.gradle.kts
文件中的dependencies
“部分”:
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
的设置就足够了。
正如Web-Flux模块文档所述:
spring-core
模块提供了反应式Encoder
和Decoder
合约,可以将输入和Flux
字节的字节序列化。
显然,在配置WebFluxConfigurationSupport
的实例时,由JacksonAutoConfiguration
自动配置的ObjectMapper
不会被WebFluxAutoConfiguration
和WebFluxConfigurationSupport
Jackson2JsonEncoder
。 这个问题已经在这里报道,目前正在计划M3
里程碑。