gpt4 book ai didi

java - 使用 JDK 11 时是否需要注册 JavaTimeModule?

转载 作者:行者123 更新时间:2023-12-02 09:03:35 24 4
gpt4 key购买 nike

我刚刚发现,当我使用 JDK 8 时,我必须注册 JavaTimeModule 来添加对 java.time API 的支持。

    @Bean
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
return objectMapper;
}

否则我会得到这样的错误:

com.fasterxml.jackson.datab
ind.exc.MismatchedInputException: Unexpected token (START_OBJECT), expected VALUE_STRING

但是,当我迁移到 JDK 11 时,我注意到即使不注册模块它也可以工作。即使我只是尝试在两个不同的 JDK(8/11) 上运行相同的应用程序(不更改其他库版本),如果不注册模块,它仍然无法在 JDK 8 上运行,但可以在 JDK 11 上运行。

我找不到任何特定的序列化器/反序列化器可以帮助 JDK 11 自行处理它。实际上是否在 JDK 或其他库中添加了任何内容,使其不需要注册新的 JavaTimeModule?否则,我在考虑添加或省略它时会格外小心。

最佳答案

看起来 registerModule 当前(数据绑定(bind) 2.11.x)的行为是,如果您尝试注册已注册的类型模块,并且如果 IGNORE_DUPLICATE_MODULE_REGISTRATIONS 映射器功能是正确的。 (默认情况下是这样。)

因此,根据您的说法,我推测日期/时间模块正在自动注册 Java 11。

另一方面,无论自动注册如何,手动注册任何模块也应该是安全的。

注意:这将在数据绑定(bind) 3.x 中全部改变。首先,registerModule 已在“master”分支中删除。

关于java - 使用 JDK 11 时是否需要注册 JavaTimeModule?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59996761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com