在 Spring Boot 应用程序中将 mongo db 升级到 3.2

Posted

技术标签:

【中文标题】在 Spring Boot 应用程序中将 mongo db 升级到 3.2【英文标题】:Upgrade mongo db to 3.2 in spring boot application 【发布时间】:2016-09-01 19:30:09 【问题描述】:

我正在使用 Spring Boot 1.2.8 和 Mongo db 2.4.10。我打算将 mongo db 升级到 3.2.0。

所以我在 pom 下面使用了当前的 sprinb boot 1.2.8,

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

我在 mongo-java-driver 版本 2.12.5 附带的依赖层次结构中看到

但我读到mongo java driver doc,它说即使是 2.14 版,它也不支持所有 MongoDB 3.2 功能(例如,阅读问题)

所以我将 spring boot 升级到 1.3.3 的最新版本,期望我会得到一个支持所有 mongo db 3.2 功能的 mongo-java-driver 版本 3.2。

但是我得到了带有 Springboot 1.3.3 的 mongo-java-driver 2.13.3

那么如何升级我的应用程序以支持 mongo db 3.2 版?

编辑:

用最新的spring boot 1.3.4下面是层次结构,

spring-boot-starter-data-mongodb 1.3.4 [compile]
    -mongo-java-driver 2.13.3 [compile]
        -spring-data-mongodb 1.8.4 [compile]
              -mongo-java-driver 2.13.3 [omitted for conflict with 2.13.3]

ref doc 说, Spring Data MongoDB 1.9 中的新增功能=>断言与 MongoDB 3.0 和 MongoDB Java Driver 3.2 的兼容性

Spring Data MongoDB 1.7 的新特性=>断言与 MongoDB 3.0 和 MongoDB Java Driver 3-beta3 的兼容性

所以说,如果我使用 spring boot 1.3.4 和上面提到的 spring boot 1.3.4,它会支持 mongo db 3.2 的所有功能,尽管我得到 spring-data-mongodb 1.8.4 是否正确?

【问题讨论】:

【参考方案1】:

Spring Data MongoDB 构建在 MongoDB 的 Java 驱动程序之上。它使用它与 MongoDB 实例进行通信。要使用 Spring Data MongoDB,您需要它和 Java 驱动程序。

Spring Data MongoDB support the 3.x driver。要使用它,您可以通过将以下内容添加到您的 pom 中来覆盖 Spring Boot 配置的驱动程序版本:

<properties>
    <mongodb.version>3.2.2</mongodb.version>
</properties>

【讨论】:

我明白了。那么spring-boot-starter-data-mongodb覆盖mongo java驱动的功能知道吗?在这种情况下,是否需要 mongo java 驱动程序? 不,starter提供了两个MongoDB相关的依赖:Spring Data MongoDB和MongoDB的Java驱动。 Spring Data MongoDB 使用驱动程序与 MongoDB 对话。 威林森 谢谢。我在 spring boot 1.3.4 中明确使用了 mongo java driver 3.2.2。我得到最新春天的春天 datamongo db 1.8。虽然文档说 spring data mongodb 1.9 支持 mongodb java driver 3.2,但我假设我获得了 mongodb 3.2.0 的所有功能。请查看我的编辑问题 @AndyWilkinson,我怎样才能用 gradle 做同样的事情? @Leffchik 将ext['mongodb.version']='3.2.2' 添加到您的build.gradle【参考方案2】:

在 pom.xml 文件中使用以下标签,您不必担心 spring 版本。您无需在 pom.xml 文件中提及任何 spring boot jar 版本。Spring IO 平台会处理它以包含兼容的 jars。

 <parent>
    <groupId>io.spring.platform</groupId>
    <artifactId>platform-bom</artifactId>
    <version>2.0.1.RELEASE</version>
</parent>

【讨论】:

以上是关于在 Spring Boot 应用程序中将 mongo db 升级到 3.2的主要内容,如果未能解决你的问题,请参考以下文章

在eclipse中将Spring Boot应用程序导出为JAR文件

如何在 Spring Boot 应用程序中将用户添加到嵌入式 tomcat?

如何在 Wildfly 中将外部属性文件加载到 Spring Boot

Spring Boot 应用程序无法在 Docker 中将事件发布到 Kafka

无法使用 Hibernate 在 Spring Boot 中将 MongoDB 设置为自动递增

在 Spring Boot 应用程序中将 mongo db 升级到 3.2