gpt4 book ai didi

java - Spring Boot Starter-Web 在启动时尝试连接 Mongo

转载 作者:行者123 更新时间:2023-11-30 07:02:04 25 4
gpt4 key购买 nike

我在使用 Spring Boot 和 MongoDB 外部驱动程序时遇到一些问题。我无法使用Spring Data MongoDB项目,因为我需要使用Mongo提供的官方异步驱动程序。但是,我需要使用 Spring Boot,因为我正在开发的模块是使用该库的更大项目的一部分。

这是我的 pom.xml 文件。

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<artifactId>tx-view</artifactId>
<version>1.0-SNAPSHOT</version>

<!-- omissis -->

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-async</artifactId>
<version>${mongodb.version}</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

具体来说,我使用的是 Spring Boot 1.4.1 和 Mongo Async Driver 3.2.2。

这是我的申请。

@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
public class TxViewApplication {
public static void main(String[] args) {
SpringApplication.run(TxViewApplication.class, args);
}

@Value("${mongo.uri}")
private String mongoUri;

@Bean
public MongoClient mongoClient() {
return MongoClients.create(mongoUri);
}
}

它遵循我目前唯一的(空)测试。

@SpringBootTest
@RunWith(SpringRunner.class)
public class ApplicationTest {
@Test
public void loadContext() throws Exception {}
}

我在这个项目中没有其他代码。当我运行测试时,出现以下错误:

2016-11-22 15:43:58.597  INFO 4572 --- [null'}-db:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server db:27017

com.mongodb.MongoException: java.io.IOException: Il computer remoto ha rifiutato la connessione di rete.

at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:125) ~[mongodb-driver-core-3.2.2.jar:na]
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:128) ~[mongodb-driver-core-3.2.2.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]
Caused by: java.io.IOException: Il computer remoto ha rifiutato la connessione di rete.

at sun.nio.ch.Iocp.translateErrorToIOException(Iocp.java:309) ~[na:1.8.0_101]
at sun.nio.ch.Iocp.access$700(Iocp.java:46) ~[na:1.8.0_101]
at sun.nio.ch.Iocp$EventHandlerTask.run(Iocp.java:399) ~[na:1.8.0_101]
at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) ~[na:1.8.0_101]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_101]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_101]
... 1 common frames omitted

如您所见,我已在 SpringBootApplication 注释中正确插入了 exclude 子句,以阻止 Spring Boot 尝试处理自己与 Mongo 的连接,如下所示Mongo tries to connect automatically to port 27017(localhost)中建议.

我还注意到,在将 spring-boot-starter-web 的依赖添加到 pom.xml 后,我开始出现错误。

如何禁止 Spring Boot 在启动时尝试自动连接到 Mongo?同步版本的 MongoDB 驱动程序也存在同样的问题。

--- 编辑 ---

我还尝试以这种方式围绕 async.MongoClient 对象构建一个包装器:

public class MongoWrapper {
private final MongoClient mongo;

public MongoWrapper() {
mongo = MongoClients.create();
}

public MongoClient getMongo() {
return mongo;
}
}

配置已相应更改。

@Bean
public MongoWrapper mongo() {
return new MongoWrapper();
}

不幸的是,一切都没有改变。 Spring Boot 似乎也以这种方式拦截 MongoClient 对象:(

非常感谢。

最佳答案

您自己的配置中有一个 MongoClient bean,如果您排除了自动配置,那么它对我来说没有任何意义。

我已经在您自己的配置中注释掉了 @Bean 定义,现在不再尝试连接到 Mongo。我不确定我是否回答了您的问题,您可能正在寻找其他东西,但如果您不想使用 mongo,请不要在您自己的配置中定义 MongoClient!

关于java - Spring Boot Starter-Web 在启动时尝试连接 Mongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40745157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com