升级驱动程序版本
Overview
在此部分中,您可以确定需要对应用程序进行哪些更改,以便将驱动程序升级到新版本。
升级前,请执行以下操作:
确保新版本与应用程序连接到的MongoDB Server版本以及应用程序运行所在的Java运行时环境 (JRE) 兼容。 有关此信息,请参阅 Java兼容性页面。
在下面的“重大更改”部分中,解决应用程序正在使用的驾驶员的当前版本与计划升级版本之间发生的任何重大更改。
提示
如需尽量减少应用程序将来升级驱动程序版本时可能需要的更改,请使用“稳定版 API”。
重大更改
重大更改是对特定版本驱动程序中的约定或行为进行的修改,如果在升级前未加以解决,可能会阻止您的应用程序正常运行。
本部分中的重大更改按引入它们的驱动程序版本进行分类。升级驱动程序版本时,请解决当前版本和升级版本之间的所有重大更改。例如,如果您要将驱动程序从 v4.0 升级到 v4.5,请解决 v4.0 之后的版本的所有重大更改,包括 v4.5 下列出的任何更改。
版本 4.7 重大更改
setWindowFields
构建器API不再是beta。 新的构建器破坏了二进制和源代码兼容性。 请参阅 聚合API文档 有关新的setWindowFields()
方法签名的信息。如果您的应用程序在 v4.7 之前的版本中使用此构建器,请更新源代码以使用新的方法签名并重建二进制文件。
版本 4.2 破坏性更改
ObjectId
类及其serialVersionUID
字段已更新为使用新格式,这会最大限度减少不同版本的驱动程序之间的序列化兼容性问题。如果使用此版本或更高版本驱动程序的应用程序尝试对任何包含
ObjectId
且由先前版本的驱动程序序列化的对象执行 Java 对象序列化,则 Java 会引发InvalidClassException
。如需了解有关“Java 对象序列化”的更多信息,请参阅 Java 文档中的可序列化对象部分。
版本 4.0 重大更改
3.12 版本中标记为已弃用的几个类和方法在此版本中已删除。
插入助手方法返回插入结果对象,而不是
void
。BsonDocument
、Document
和DbObject
上的toJson()
方法返回宽松 JSON 格式,而不是严格 JSON 格式。这增加了 JSON 文档的可读性,但也更难以识别 BSON 类型信息,例如 32 位和 64 位整数之间的差异。如果应用程序依赖于严格 JSON 格式,请在读取或写入数据时使用严格模式。请参阅文档数据格式:扩展 JSON 指南,了解如何在当前 API 中指定 JSON 格式。java.util.UUID
值的默认 BSON 表示形式从JAVA_LEGACY
更改为UNSPECIFIED
。 存储或检索 UUID 值的应用程序必须显式指定要使用的表示形式。您可以在MongoClientSettings
的uuidRepresentation
属性中指定表示形式。您指定的 UUID 表示严格控制驱动程序解码 UUID 的方式。在以前版本的驱动程序中,如果指定
JAVA_LEGACY
表示,驱动程序会将子类型 3 和 4 的二进制对象解码为 UUID。在版本 4.0 中,JAVA_LEGACY
表示仅适用于子类型 3。有关
UuidRepresentation
枚举的成员列表,请参阅 v4.0 API 文档。连接池不再限制需要连接 MongoDB 的等待队列线程或异步任务的数量。应用程序应根据需要限制请求,而不是依赖驱动程序来抛出
MongoWaitQueueFullException
。驱动程序不再使用
java.util.logging
(JUL) 包进行日志记录,仅支持 SLF4J 日志记录框架。嵌入式和 Android 驱动程序已被删除。如果您的应用程序依赖于这些驱动程序,则必须继续使用 3.x Java 驱动程序版本。
uber JAR、
mongo-java-driver
和mongodb-driver
均不再发布。如果您的应用程序依赖其中一项,则必须根据应用程序使用的 API 切换到mongodb-driver-sync
或mongodb-driver-legacy
。确保从依赖项中删除 uber JAR。对多个类的更新引入了二进制兼容性中断,例如插入辅助方法的方法签名更改。针对此版本或更高版本重新编译所有链接到驱动程序的类,以确保它们继续运行。