3

我正在使用 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. 配置一个Jackson2ObjectMapperBuilderbean:

    @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. 配置一个ObjectMapperbean:

    @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就足够了。

4

1 回答 1

3

正如Web-Flux 模块文档所述:

spring-core模块提供了响应式EncoderDecoder契约,可以将 aFlux字节序列化到类型化对象和从类型化对象中序列化。

显然,在配置ObjectMapper. JacksonAutoConfiguration_ 此问题已在此处报告,目前计划用于里程碑。WebFluxAutoConfigurationWebFluxConfigurationSupportJackson2JsonEncoderM3

于 2017-06-16T09:14:24.290 回答