我使用Spring和MongoDB存储库来管理我的数据。我在src/main/resources/application.properties .文件中指定了以下内容:
spring.data.mongodb.uri=mongodb://fedoradb:27017但是,在试图对存储库进行插入时,我仍然会得到超时:
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看起来是这样的:
@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时,异常发生在我的主类中:
@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文件不负责设置数据库位置吗?
发布于 2015-05-10 03:12:23
发现问题了!我想使用我的mongo客户端,我正在创建一个新的默认客户端。
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(new MongoClient(), getDatabaseName());
}变到
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(mongo(), getDatabaseName());
}https://stackoverflow.com/questions/30146409
复制相似问题