在Spring Boot 2.0.0.M1中将Jackson配置为“全局”使用SNAKE_CASE

我使用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:

     @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:

     @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模块提供了反应式EncoderDecoder合约,可以将输入和Flux字节的字节序列化。

显然,在配置WebFluxConfigurationSupport的实例时,由JacksonAutoConfiguration自动配置的ObjectMapper不会被WebFluxAutoConfigurationWebFluxConfigurationSupport Jackson2JsonEncoder 。 这个问题已经在这里报道,目前正在计划M3里程碑。