首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用127.0.0.1代替指定DB的Spring存储库

使用127.0.0.1代替指定DB的Spring存储库
EN

Stack Overflow用户
提问于 2015-05-10 00:20:17
回答 1查看 1.2K关注 0票数 0

我使用Spring和MongoDB存储库来管理我的数据。我在src/main/resources/application.properties .文件中指定了以下内容:

代码语言:javascript
复制
spring.data.mongodb.uri=mongodb://fedoradb:27017

但是,在试图对存储库进行插入时,我仍然会得到超时:

代码语言:javascript
复制
Caused by: com.mongodb.MongoTimeoutException: Timed out after 10000 ms while waiting for a server that matches AnyServerSelector{}. Client view of cluster state is {type=Unknown, servers=[{address=127.0.0.1:27017, type=Unknown, state=Connecting, exception={com.mongodb.MongoException$Network: Exception opening the socket}, caused by {java.net.ConnectException: Connection refused: connect}}]
at com.mongodb.BaseCluster.getServer(BaseCluster.java:82)
at com.mongodb.DBTCPConnector.getServer(DBTCPConnector.java:656)
at com.mongodb.DBTCPConnector.access$500(DBTCPConnector.java:40)
at com.mongodb.DBTCPConnector$MyPort.getConnection(DBTCPConnector.java:505)
at com.mongodb.DBTCPConnector$MyPort.get(DBTCPConnector.java:448)
at com.mongodb.DBTCPConnector.getPrimaryPort(DBTCPConnector.java:407)
at com.mongodb.DBCollectionImpl.update(DBCollectionImpl.java:265)
at com.mongodb.DBCollection.update(DBCollection.java:214)
at com.mongodb.DBCollection.save(DBCollection.java:1058)
at com.mongodb.DBCollection.save(DBCollection.java:1014)
at org.springframework.data.mongodb.core.MongoTemplate$10.doInCollection(MongoTemplate.java:954)
at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:410)
... 23 more

我的MongoConfig看起来是这样的:

代码语言:javascript
复制
@Configuration
@EnableMongoRepositories(basePackages = {"com.SpringTest.repository"})
@ComponentScan("com.SpringTest.repository")
public class MongoConfig extends AbstractMongoConfiguration {

@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
    return new SimpleMongoDbFactory(new MongoClient(), getDatabaseName());
}

@Override
protected String getDatabaseName() {
    return "sprtest";
}

protected String getDatabaseHost() {
    return "fedoradb";
}

@Bean
@Override
public Mongo mongo() throws Exception {
    MongoClient client = new MongoClient(getDatabaseHost());
    client.setWriteConcern(WriteConcern.SAFE);
    return client;
}

@Bean
public CustomConversions customConversions() {
    List<Converter<?, ?>> converters = Lists.newArrayList();
    converters.add(new OAuth2AuthenticationConverter());
    return new CustomConversions(converters);
}

@Bean
public MappingMongoConverter mongoConverter() throws Exception {
    MongoMappingContext mappingContext = new MongoMappingContext();
    DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory());
    MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mappingContext);
    mongoConverter.setCustomConversions(customConversions());
    return mongoConverter;
}

@Bean(name = "mongoTemplate")
public MongoTemplate mongoTemplate() throws Exception {
    return new MongoTemplate(mongoDbFactory(), mongoConverter());

}
}

当执行CommandLineRunner时,异常发生在我的主类中:

代码语言:javascript
复制
@SpringBootApplication
@SpringApplicationConfiguration(classes = BootApplication.class)
@ComponentScan(basePackages = {"com.SpringTest", "com.SpringTest.repository"})
public class BootApplication {

@Bean
CommandLineRunner init(final UserRepository userRepository) {
    return new CommandLineRunner() {
        @Override
        public void run(String... args) throws Exception {
            System.out.println("Inserting User into User Repository");
            User user = new User.Builder()
                    .id("id-1")
                    .primaryEmail("test@test.com")
                    .password("test")
                    .firstName("testfirst")
                    .lastName("testnlast")
                    .roles(Lists.newArrayList(Role.ROLE_USER))
                    .build();
            userRepository.save(user);
        }
    };
}    }

public static void main(String[] args) {
    System.out.println("Starting up");
    SpringApplication.run(BootApplication.class, args);
}

}

在这种情况下,application.properties文件不负责设置数据库位置吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-10 03:12:23

发现问题了!我想使用我的mongo客户端,我正在创建一个新的默认客户端。

代码语言:javascript
复制
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(new MongoClient(), getDatabaseName());
}

变到

代码语言:javascript
复制
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(mongo(), getDatabaseName());
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30146409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档