【发布时间】:2017-11-18 16:15:45
【问题描述】:
我正在使用 Spring Boot 2.0.0.M1(因此是 Spring 5.0.0.RC1)。我正在尝试将其配置为使用PropertyNamingStrategy.SnakeCaseStrategy.SNAKE_CASE,但到目前为止我还没有工作。
我试过了:
-
application.yml文件包含:spring: jackson: property-naming-strategy: SNAKE_CASE -
配置
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 } -
配置
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) 注释每个类来使其工作的唯一方法...但这不是我的情况的解决方案。
还有其他选择吗?
这是我的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,application.yml 中的设置就足够了。
【问题讨论】:
-
如果我使用 Spring boot 和
spring-boot-starter-web使用版本 2.0.0.M1 设置一个简单的项目,选项 1 对我来说可以正常工作。你确定你不是自己在某个地方创建了一个 JacksonObjectMapperbean 吗? -
看起来像 WebFlux 模块的“问题”;它的目标是
M3...我可以等待:)
标签: java spring-boot jackson kotlin spring-webflux