当前位置: 首页 > 知识库问答 >
问题:

如何使用spring-boot指定spring-data-mongodb版本?

祁俊拔
2023-03-14

我想使用最新版本的spring data mongodb,以便使用全文搜索功能,但我不知道如何使用spring boot starter data mongodb依赖项来指定这一点。

你可以在这里阅读:没有指定spring-data-mongodb版本的maven repository。

这是我的pom文件:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.6.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- Spring Boot -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Spring Boot Rest -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <!-- Spring Boot Test -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <!-- Spring MongoDB integration -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>

共有3个答案

曹建华
2023-03-14

@sendon1982的回答对我有用。这是我的POM.XML的一个例子。我在这里添加它作为答案,因为我无法粘贴我的pom文件作为评论到sendon1982答案...

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.3.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>test.barry</groupId>
    <artifactId>test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>test</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <start-class>test.barry.Main</start-class>
        <mongodb.version>4.1.0</mongodb.version>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <version>2.3.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongodb-driver-sync</artifactId>
            <version>4.1.0</version>
        </dependency>
    </dependencies>
</project>
宗苗宣
2023-03-14

您可以在父项目pom文件中找到mongodb依赖项

/../.m2/repository/org/springframework/boot/spring-boot-dependencies/2.3.0.RELEASE/spring-boot-dependencies-2.3.0.RELEASE.pom

该文件定义了其他库SpringBoot使用的所有依赖版本

<properties>
    <activemq.version>5.15.12</activemq.version>
    <antlr2.version>2.7.7</antlr2.version>
    ...
    <mongodb.version>4.0.3</mongodb.version>
    ...
</properties>

因此,如果您想为mongoDB使用不同的版本,请在您的pom文件中定义一个属性来覆盖默认的属性,例如(我认为这只有在您使用spring-boot-starter-父作为父文件时才有效)

<properties>
    <mongodb.version>3.11.2</mongodb.version>
</properties>
牟嘉
2023-03-14

Spring Boot在spring-boot-依赖项项目中定义了它的所有依赖项和依赖项版本。这个项目只包含一个只有依赖项和版本作为属性的pom。

Spring Data以所谓的发布系列发布其所有兼容版本,这确保了该版本的所有依赖项都能协同工作。

当你仔细观察pom时,你会看到一个名为spring-data-releasetrain.version的maven属性,对于即将到来的Spring Boot 1.2,它指向最新的发布火车版本Evans-RELEASE。1.1.7 版本指向以前的版本 Dijkstra-SR4。我建议从1.1.6升级到1.1.7以防万一。

您的项目已经将< code > spring-boot-starter-parent 项目作为其父项目,因此理论上升级Spring数据版本应该像覆盖指定属性一样简单。

<properties>
    <spring-data-releasetrain.version>Evans-RELEASE</spring-data-releasetrain.version>
</properties>

如前所述,使用发布系列是首选,因为这将确保您获得所有兼容版本。

 类似资料:
  • 我使用Spring Boot和Spring Data MongoDB与底层分片MongoDB集群进行接口。我的Spring Boot应用程序通过路由器访问集群。 使用Spring Data MongoDB,可以通过指定对象持久化到的集合,或者默认为类名(第一个字母小写)。这些藏品不需要预先存在;它们可以在运行时创建。 要在MongoDB中分片集合,您需要 1-在数据库上启用分片: 2-在分片数据库

  • 将Java11指定为Spring(或Spring Boot)pom.xml文件中使用的版本的正确方法是什么? 例如,我需要在POM的属性中放入什么值? 对于Java8,我们使用,正如文档所示,对于Java9,我们使用。 我不确定Java11是否是(尽管这似乎不太可能),并且在使用时,我看到它被指定为,但我没有使用编译器插件。 例如。 我到处找都找不到答案,因为几乎所有我读过的文档以及与Java版本

  • 指定Java11作为Spring(或Spring Boot)pom中使用的版本的正确方法是什么。xml文件? 也就是说,我需要在属性? 对于Java8,我们使用,就像留档显示的那样,对于Java9,它是。 我不确定Java 11是否会是(尽管这似乎不太可能),我看到在使用 还是仅仅? 我尝试了这两种方法,我的网络服务器似乎启动正确,编译正确(IntelliJ显示),但是我并不完全相信改变值是什么,

  • 我需要使用spring数据过滤mongodb中的文档,该数据包含nexted数组。我在mongo shell上使用以下聚合查询,它运行良好。但当我通过springdata聚合操作触发该操作时,我得到的是空响应。mongo查询的工作原理是: 我正在使用但不工作的Spring数据代码: 我尝试打破这个聚合函数,它能够项目rssSearchResponse.journeys但$unWind后,它返回空结

  • 问题内容: 目前我上了主要课程: 一个成员类(id,名字..),一个MemberController类: 和一个WebSecurityConfig类: 当我运行“ http:// localhost:8080 / members ”时,我得到一个登录页面,我输入“ user”作为用户&“ user”作为密码,然后得到硬编码的Member。它工作正常,但随后我右键单击了我的项目-按运行方式作为Mav

  • 目前我得到的主要类: 成员类(id,firstname..),MemberController类: 和一个WebSecurityConfig类: 当我运行"http://localhost:8080/members"我得到一个登录页面,我输入"user"作为用户 它会停留在登录页面上。我试图删除依赖关系 出了什么问题?谢谢