无法在 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的依赖 使用如果你想嵌入 mongo,添加依赖 https://mvnrepository.com/artifact/de.flapdoodle.embed/de.flapdoodle.embed.mongo
或者,您可以轻松地在本地安装 mongo 实例。
【讨论】:
请检查 pom embedmongo-spring我刚刚注意到我添加的依赖项是测试范围的。删除后一切正常。
<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的主要内容,如果未能解决你的问题,请参考以下文章
在没有xml的spring boot中连接到mysql数据源
Spring Boot Docker Container 无法连接到托管在 Docker 主机上的 postgresql