Spring数据MongoDb抛出错误连接拒绝

时间:2012-09-24 13:20:11

标签: mongodb spring-data-mongodb

使用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的新手。请指教,为什么我会收到此错误?

提前致谢。

2 个答案:

答案 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