无法在 Spring Boot 应用程序中连接到 MongoDB

Posted

技术标签:

【中文标题】无法在 Spring Boot 应用程序中连接到 MongoDB【英文标题】:Unable to connect to MongoDB in Spring Boot application 【发布时间】:2020-03-22 06:44:33 【问题描述】:

我刚刚使用带有 mongoDB-reactive 依赖项的 Spring Tool Suite 创建了一个非常基本的 Spring Boot 项目并运行了该应用程序,但是,我不断收到以下异常

2019-11-27 00:31:19.699 信息 11988 --- [localhost:27017] org.mongodb.driver.cluster :监控线程中的异常 同时连接到服务器 localhost:27017

com.mongodb.MongoSocketOpenException: 异常打开套接字 com.mongodb.connection.netty.NettyStream$OpenChannelFutureListener.operationComplete(NettyStream.java:410) ~[mongodb-driver-core-3.11.2.jar:na] 在

我正在使用 Spring Boot (2.2.1.RELEASE)

applications.properties 里面我添加了下面这行

spring.data.mongodb.uri=mongodb://localhost:27017/testdb

我错过了什么?

【问题讨论】:

【参考方案1】:

MongoSocketOpenException 发生在 Spring Boot 应用程序无法使用给定的连接详细信息(或默认 localhost 和 27017 端口)连接到 mongo db 时

使用 mongo shell 检查 MongoDB 实例是否正在运行 如果失败,则检查 mongo db 服务器配置以侦听接口 ip(启用侦听所有接口 - 使用 net config as

net: bindIp: 127.0.0.1 port: 27017

【讨论】:

感谢您的回复。我没有运行单独的 mongoDB 实例。我期待 Spring Boot 将使用嵌入式 MongoDB。另外,在哪里配置“网络配置”?.. 你必须添加嵌入式mongodb的依赖 使用 de.flapdoodle.embedde.flapdoodle.embed.mongo @ashanshamika 在我使用嵌入式 mongo 进行测试的 Spring Boot 应用程序中应该在哪里设置这个网络配置?【参考方案2】:

如果你想嵌入 mongo,添加依赖 https://mvnrepository.com/artifact/de.flapdoodle.embed/de.flapdoodle.embed.mongo

或者,您可以轻松地在本地安装 mongo 实例。

【讨论】:

请检查 pom embedmongo-spring cz.jirutka.springembedmongo-springRELEASE中包含的依赖项> 依赖>【参考方案3】:

我刚刚注意到我添加的依赖项是测试范围的。删除后一切正常。

    <dependency>
        <groupId>de.flapdoodle.embed</groupId>
        <artifactId>de.flapdoodle.embed.mongo</artifactId>
        <version>2.2.0</version>
    </dependency>

【讨论】:

【参考方案4】:

在我的情况下,我试图从其他 sprint 启动应用程序连接到 k8s 中的 mongo 服务,我了解到 SpringBoot 具有一些自动配置功能,它在应用程序启动期间默认尝试连接到 localhost:27017,以跳过它我不得不在应用程序 yaml 中排除它: spring.autoconfigure.exclude:org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration

【讨论】:

以上是关于无法在 Spring Boot 应用程序中连接到 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章

在spring boot中连接到多个数据库

在没有xml的spring boot中连接到mysql数据源

Spring Boot Docker Container 无法连接到托管在 Docker 主机上的 postgresql

在 Spring JPA 中连接到两个不同的数据库失败

从 Spring Boot 连接到 Heroku Postgres

无法在 Python 程序中连接到 MySQL