java - 将 Spring Boot 从 2.4.1 升级到 2.6.1,出现 `java.time.Instant` 默认不支持错误

标签 java spring spring-boot fasterxml

当我将 Spring Boot 应用程序从 2.4.1 升级到 2.6.1 时。我收到以下错误。

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type java.time.Instant not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: org.springframework.boot.actuate.trace.http.HttpTrace["timestamp"])

最佳答案

从 Spring Boot 2.4 升级到 2.6 后,您还将 Jackson 从 2.11 升级到 2.13。 Jackson 2.12 包含以下更改:https://github.com/FasterXML/jackson-databind/issues/2683

这会产生您所看到的错误消息,因为如果使用相应的日期时间,JSR 310 模块现在是必需的。

只有当您配置自己的 ObjectMapper 以使自动配置的对象退出时,您才会受到此影响。在配置 ObjectMapper 时,您需要显式添加 JSR 310 模块。这可以通过如下代码来完成:

objectMapper.registerModule(new JavaTimeModule());

github 上还有一个关于此问题的有点冗长但富有洞察力的讨论:https://github.com/spring-projects/spring-boot/issues/26859

关于java - 将 Spring Boot 从 2.4.1 升级到 2.6.1,出现 `java.time.Instant` 默认不支持错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70432809/

相关文章:

java - 在 JavaFX 中显示复杂的印度孟加拉语字体

java - Collections.sort() 有效,但 Collections.reverseOrder() 中断

java - Spring Framework AliasFor注解困境

java - 响应式(Reactive) Redis 序列化问题。无法序列化类型类 java.lang.Integer 的值,而不在 Redis 中保存时生成序列化器错误

java - JHipster 与 Liquibase 投入生产

java - 用于更新查询的 JPA @Query 注释(oracle sql 开发人员)——org.hibernate.exception.GenericJDBCException : could not execute query

java - 在特定时间发送通知

java - 在 servlet 中使用@Autowire

java - 有条件的 Spring Security 授权

java - block 末尾的意外内容 - 是什么构建了损坏的流?