使用 Spring Data 连接到 mongodb 时出现以下错误:
java.io.IOException: couldn't connect to [/127.0.0.1:27017] bc:java.net.ConnectException: Connection refused: connect
at com.mongodb.DBPort._open(DBPort.java:228)
at com.mongodb.DBPort.go(DBPort.java:112)
at com.mongodb.DBPort.call(DBPort.java:79)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:218)
at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:305)
at com.mongodb.DB.getCollectionNames(DB.java:284)
at org.springframework.data.mongodb.core.MongoTemplate$14.doInDB(
请找到我的配置:
@Configuration
public class AppConfig {
public @Bean MongoOperations mongoTemplate(Mongo mongo) {
MongoTemplate mongoTemplate = new MongoTemplate(mongo, "mydb");
return mongoTemplate;
}
/*
* Factory bean that creates the Mongo instance
*/
public @Bean MongoFactoryBean mongo() {
MongoFactoryBean mongo = new MongoFactoryBean();
mongo.setHost("10.6.120.180");
mongo.setPort(27017);
return mongo;
}
/*
* Use this post processor to translate any MongoExceptions thrown in @Repository annotated classes
*/
public @Bean PersistenceExceptionTranslationPostProcessor persistenceExceptionTranslationPostProcessor() {
return new PersistenceExceptionTranslationPostProcessor();
}
}
Mongo-context-test.xml
<mongo:db-factory dbname="mydb"/>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongoDbFactory"/>
</bean>
我是 Spring Data 和 MongoDB 的新手。请指教,为什么我会收到此错误?
提前致谢。
最佳答案
您确定正在使用您的 AppConfig 类吗?
正如我的评论中提到的,您收到的错误表明您的程序正在尝试连接到服务器 127.0.0.1
上的 MongoDB而您发布的 AppConfig 类清楚地表明您想要连接到 IP 地址 10.6.120.180
.
如果您以某种方式获取包含 mongo.setHost("localhost")
的 AppConfig 类,则可能会发生这种情况。这是发布在 Github 上的示例代码.
更新:根据OP的评论,mongoTemplate
的类引用在Mongo-context-test.xml
指向 Spring 框架的默认值 MongoTemplate
类。
根据SpringSource文档Introduction to MongoTemplate使用可以使用 Java 创建和注册 MongoTemplate 实例或使用 Spring 的 XML 配置 MongoTemplate <beans/>
架构。
显然使用<beans/>
模式优先于 Java 中的实现。如果您使用<beans/>
schema 那么你需要使用 <mongo:mongo host="localhost" port="27017"/>
指定您的主机和端口要求,如 OP 在其评论中所述。
关于mongodb - Spring数据MongoDb抛出错误连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12565910/