Как использовать встроенную MongoDB с SpringBoot v2.6.2? ⇐ JAVA
-
Anonymous
Как использовать встроенную MongoDB с SpringBoot v2.6.2?
Я использую Spring Boot v2.6.2 и Java v17 и пытаюсь протестировать MongoConnection без запуска MongoDBService, поскольку его следует тестировать со встроенной в память MongoDB на машине сборки, нет необходимости настраивать дополнительную MongoDB обслуживание там. Наверняка в продуктивной системе должна использоваться полная MongoDB.
Я пытаюсь запустить этот простой пример:
@DataMongoTest публичный класс MongoTest { @Autowired частный UserRepository userRepository; @AfterEach пустота CleanUpDatabase() { this.userRepository.deleteAll(); } @Тест void bootstrapTestDataWithMongoTemplate() { окончательный var ресторан = новый пользователь( "123", "ABC", "DEF"); this.userRepository.insert(ресторан); окончательная найденная переменная = this.userRepository.findByFirstName("ABC"); System.out.println(найден); } } UserRepository — это интерфейс, расширяющий MongoRepository. User сам по себе представляет собой просто DBEntity с аннотацией @Document. Если я позволю приложению SpringBoot работать не в тестовом режиме, все будет работать нормально, потому что MongoDB работает в указанном месте. Но для теста я хочу, чтобы он работал как БД в памяти.
Но Springboot хочет подключиться для проверки.
2022-01-20 08:31:57.489 INFO 3976 --- [main] org.mongodb.driver.cluster: кластер создан с настройками {hosts=[ localhost: 27017], режим = ОДИН, requireClusterType = НЕИЗВЕСТНО, serverSelectionTimeout = '30000 мс'} 2022-01-20 08:31:57.521 INFO 3976 --- [localhost:27017] org.mongodb.driver.cluster: исключение в потоке монитора при подключении к серверу localhost:27017 com.mongodb.MongoSocketOpenException: сокет открытия исключения в com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) ~[mongodb-driver-core-4.4.0.jar:na] в com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:180) ~[mongodb-driver-core-4.4.0.jar:na] в com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:188) ~[mongodb-driver-core-4.4.0.jar:na] по адресу com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:152) ~[mongodb-driver-core-4.4.0.jar:na] в java.base/java.lang.Thread.run(Thread.java:833) ~[na:na] Вызвано: java.net.ConnectException: соединение отклонено: дополнительной информации нет. в java.base/sun.nio.ch.Net.pollConnect (собственный метод) ~[na:na] по адресу java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[na:na] в java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[na:na] по адресу java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[na:na] по адресу java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[na:na] в java.base/java.net.Socket.connect(Socket.java:633) ~[na:na] в com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:107) ~[mongodb-driver-core-4.4.0.jar:na] в com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) ~[mongodb-driver-core-4.4.0.jar:na] в com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-4.4.0.jar:na] ... 4 общих кадра опущены Есть какие-нибудь предложения, как это сделать? @DataMongoTest тестируется неправильно? Я думал, что встроенная зависимость Flapdoodle автоматически внедрит ее в тестовый пример.
Сам помпон тоже не такой уж и сложный:
17 org.springframework.boot привод-стартер-пружина org.springframework.boot spring-boot-starter-data-mongodb org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-devtools истина org.projectlombok ломбок истина org.springframework.boot spring-boot-starter-test тест org.springframework.security spring-security-test тест io.springfox springfox-swagger2 3.0.0 com.github.openjson openjson 1.0.11 com.github.erosb everit-json-схема 1.14.0
Я использую Spring Boot v2.6.2 и Java v17 и пытаюсь протестировать MongoConnection без запуска MongoDBService, поскольку его следует тестировать со встроенной в память MongoDB на машине сборки, нет необходимости настраивать дополнительную MongoDB обслуживание там. Наверняка в продуктивной системе должна использоваться полная MongoDB.
Я пытаюсь запустить этот простой пример:
@DataMongoTest публичный класс MongoTest { @Autowired частный UserRepository userRepository; @AfterEach пустота CleanUpDatabase() { this.userRepository.deleteAll(); } @Тест void bootstrapTestDataWithMongoTemplate() { окончательный var ресторан = новый пользователь( "123", "ABC", "DEF"); this.userRepository.insert(ресторан); окончательная найденная переменная = this.userRepository.findByFirstName("ABC"); System.out.println(найден); } } UserRepository — это интерфейс, расширяющий MongoRepository. User сам по себе представляет собой просто DBEntity с аннотацией @Document. Если я позволю приложению SpringBoot работать не в тестовом режиме, все будет работать нормально, потому что MongoDB работает в указанном месте. Но для теста я хочу, чтобы он работал как БД в памяти.
Но Springboot хочет подключиться для проверки.
2022-01-20 08:31:57.489 INFO 3976 --- [main] org.mongodb.driver.cluster: кластер создан с настройками {hosts=[ localhost: 27017], режим = ОДИН, requireClusterType = НЕИЗВЕСТНО, serverSelectionTimeout = '30000 мс'} 2022-01-20 08:31:57.521 INFO 3976 --- [localhost:27017] org.mongodb.driver.cluster: исключение в потоке монитора при подключении к серверу localhost:27017 com.mongodb.MongoSocketOpenException: сокет открытия исключения в com.mongodb.internal.connection.SocketStream.open(SocketStream.java:70) ~[mongodb-driver-core-4.4.0.jar:na] в com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:180) ~[mongodb-driver-core-4.4.0.jar:na] в com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:188) ~[mongodb-driver-core-4.4.0.jar:na] по адресу com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:152) ~[mongodb-driver-core-4.4.0.jar:na] в java.base/java.lang.Thread.run(Thread.java:833) ~[na:na] Вызвано: java.net.ConnectException: соединение отклонено: дополнительной информации нет. в java.base/sun.nio.ch.Net.pollConnect (собственный метод) ~[na:na] по адресу java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) ~[na:na] в java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) ~[na:na] по адресу java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:597) ~[na:na] по адресу java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[na:na] в java.base/java.net.Socket.connect(Socket.java:633) ~[na:na] в com.mongodb.internal.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:107) ~[mongodb-driver-core-4.4.0.jar:na] в com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:79) ~[mongodb-driver-core-4.4.0.jar:na] в com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-4.4.0.jar:na] ... 4 общих кадра опущены Есть какие-нибудь предложения, как это сделать? @DataMongoTest тестируется неправильно? Я думал, что встроенная зависимость Flapdoodle автоматически внедрит ее в тестовый пример.
Сам помпон тоже не такой уж и сложный:
17 org.springframework.boot привод-стартер-пружина org.springframework.boot spring-boot-starter-data-mongodb org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-devtools истина org.projectlombok ломбок истина org.springframework.boot spring-boot-starter-test тест org.springframework.security spring-security-test тест io.springfox springfox-swagger2 3.0.0 com.github.openjson openjson 1.0.11 com.github.erosb everit-json-схема 1.14.0
Мобильная версия