小编典典

杰克逊在我的Spring Boot应用程序中忽略了spring.jackson.properties

spring-boot

杰克逊忽略了spring.jackson.property-naming-strategy =
SNAKE_CASE。我正在使用springBootVersion
1.4.2.RELEASE。在我的application.properties文件中,添加了

spring.jackson.property-naming-strategy = SNAKE_CASE

但是Jackson并没有兑现这个财产,我的REST响应仍然是camelCase。有趣的是,该注释可以正常工作

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)

有了这个注释,我得到了snake_case响应。但是我不想注释每个响应类,这有点烦人。

编辑

我也尝试使用完全合格的类名,

spring.jackson.property-naming-strategy =
com.fasterxml.jackson.databind.PropertyNamingStrategy.SnakeCaseStrategy

那也不起作用


阅读 698

收藏
2020-05-30

共1个答案

小编典典

@EnableWebMvc在我的应用程序(face-palm!)中的一个类(ExceptionHandler)中添加了注释。

但是,根据这个问题

如果您具有@EnableWebMvc批注,则它将禁用Spring MVC的自动配置,包括配置其消息转换器以自定义Jackson的序列化。

当您使用@EnableWebMvc时,这是预期的行为,因为这样做是在告诉Spring Boot您想要控制Spring
MVC的配置。这包括配置其HTTP消息转换器以按照您的需求(反)序列化JSON。

如果要覆盖Jackson的配置,则可以使用spring.jackson。*属性,或者,如果需要更多控制,则声明自己的Jackson2ObjectMapperBuilder
bean。

删除@EnableWebMvc注释后,此属性将按预期工作。

2020-05-30