从 Spring Boot 2.4.x 更新到 2.5.x 后 Jackson 模块未注册

Jackson module not registered after update from Spring Boot 2.4.x to 2.5.x

将我的 spring-boot-starter-parent 版本从 2.4.8 更新到 2.5.4 后,在尝试反序列化 LocalDate 时,jackson 序列化开始出现此错误:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDate` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling

据我所知,这不应该发生(以前的版本也不会发生),因为 Spring Boot 默认具有这些 Jackson 依赖项(jackson-datatype-jdk8、jackson-datatype-jsr310、等等)

我没有自定义 Jackson 配置。
Spring 引导的 2.5.x 版本有什么变化吗?

出现此问题是因为 JSON 本身没有日期格式,因此它将日期表示为字符串。

日期的字符串表示与内存中 LocalDate 类型的对象不同,因此我们需要一个外部反序列化器从字符串中读取该字段,并需要一个序列化器将日期呈现为字符串格式。

具有以下依赖性:-

<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>2.11.0</version>
</dependency>

在实体级别使用 LocalDateDeserializer 和 JsonFormat 注释。

public class EntityWithDate{

    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonSerialize(using = LocalDateSerializer.class)
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
    public LocalDate operationDate;
}

还可以使用 Jackson 对日期序列化和反序列化的原生支持。

这是

的副本

我认为我没有足够的声誉来标记它。