使用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();
}
}
蒙戈-上下文的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的新手。请指教,为什么我会收到此错误?
提前致谢。
答案 0 :(得分:2)
您确定正在使用您的AppConfig类吗?
正如我的评论中所提到的,您收到的错误表明您的程序正在尝试连接到服务器127.0.0.1
上的MongoDB,而您发布的AppConfig类清楚地表明您要连接到IP地址{{1 }}
如果您以某种方式选择包含10.6.120.180
的AppConfig类,这可能会发生,该类位于Github上发布的示例代码中。
更新:根据OP的评论,mongo.setHost("localhost")
中mongoTemplate
的类引用指向Spring Framework的默认Mongo-context-test.xml
类。
根据SpringSource文档Introduction to MongoTemplate,可以使用Java创建和注册MongoTemplate的实例 OR 使用Spring的XML MongoTemplate
模式配置MongoTemplate。
显然,使用<beans/>
模式优先于Java中的实现。如果您使用<beans/>
架构,则需要使用<beans/>
来指定主机和端口要求,如OP在其评论中所述。
答案 1 :(得分:0)
如果您计划使用自定义名称定义自己的配置bean,则可以通过执行以下操作来排除Spring的自动配置类:
@EnableAutoConfiguration(exclude={MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
OR
@SpringBootApplication(exclude={MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
请记住:将EnableAutoConfiguration / SpringBootApplication与排除列表一起使用时,请确保没有其他类使用EnableAutoConfiguration或SpringBootApplication进行注释。
来源:How to disable spring-data-mongodb autoconfiguration in spring-boot