Невозможно подключиться к MongoDB в приложении Spring Boot
Я только что создал очень простой проект Spring Boot, используя Spring Tool Suite с mongoDB-reactive
зависимости и запускаю приложение, но я продолжаю получать следующие исключения
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
Что мне не хватает?
3 ответа
Если вам нужен встроенный mongo, добавьте зависимость https://mvnrepository.com/artifact/de.flapdoodle.embed/de.flapdoodle.embed.mongo
В качестве альтернативы вы можете легко установить экземпляр mongo на свой локальный.
Я только что заметил, что добавленная мной зависимость является тестовой. После удаления все заработало.
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<version>2.2.0</version>
</dependency>
MongoSocketOpenException
происходит, когда приложение весенней загрузки не может подключиться к mongo db с использованием заданных данных подключения (или локального хоста по умолчанию и порта 27017)
Проверьте, запущен ли экземпляр MongoDB с помощью оболочки mongo, в случае сбоя проверьте конфигурацию сервера mongo db для прослушивания интерфейса ip (чтобы включить прослушивание всех интерфейсов - используйте сетевую конфигурацию как
net:
bindIp: 127.0.0.1
port: 27017
В моем случае я пытался подключиться к службе mongo, присутствующей в k8s, из другого загрузочного приложения спринта, я понял, что SpringBoot имеет некоторые функции автоматической настройки, которые он пытался подключиться к localhost:27017 по умолчанию во время запуска приложения, чтобы пропустить его, я пришлось исключить его в приложении yaml: spring.autoconfigure.exclude:org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration