我使用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)
为每个班级添加注释来找到使其成功的唯一方法......但这不是我案例的解决方案。
还有其他选择吗?
这是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
中的设置就足够了。
答案 0 :(得分:3)
正如Web-Flux module documentation所述:
spring-core
模块提供了被动Encoder
和Decoder
合同,这些合同允许将Flux
个字节序列化为类型化对象。
显然,在配置WebFluxAutoConfiguration
的实例时,WebFluxConfigurationSupport
和Jackson2JsonEncoder
将无法选择ObjectMapper
JacksonAutoConfiguration
自动配置的M3
。此问题已在here中报告,目前已计划用于{{1}}里程碑。