如何让org.mongodb.driver.cluster在spring boot中使用嵌入式mongodb?

如何让org.mongodb.driver.cluster在spring boot中使用嵌入式mongodb?,mongodb,spring-boot,spring-mongodb,Mongodb,Spring Boot,Spring Mongodb,正在尝试将嵌入式mongodb用于我的springlocalprofile。以下是MongoTemplate的配置 @Configuration @Profile("local") public class LocalMongoConfig { private static final String MONGO_DB_URL = "localhost"; private static final String MONGO_DB_NAME = "embeded_db"; @

正在尝试将嵌入式mongodb用于我的spring
local
profile。以下是MongoTemplate的配置

@Configuration
@Profile("local")
public class LocalMongoConfig {
    private static final String MONGO_DB_URL = "localhost";
    private static final String MONGO_DB_NAME = "embeded_db";
    @Bean
    @Primary
    public MongoTemplate mongoTemplate() throws IOException {
        EmbeddedMongoFactoryBean mongo = new EmbeddedMongoFactoryBean();
        mongo.setBindIp(MONGO_DB_URL);
        MongoClient mongoClient = mongo.getObject();
        MongoTemplate mongoTemplate = new MongoTemplate(mongoClient, MONGO_DB_NAME);
        return mongoTemplate;
    }
}
这是
applicationlocal.yml

spring:
  data:
    mongodb:
      uri: mongodb://127.0.0.1:27017/embeded_db
但是当从日志运行应用程序时,我可以看到嵌入式mongodb是在随机端口启动的

13:53:49.849 [Thread-7] INFO  org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongo - 2020-03-20T13:53:49.849+0800 I NETWORK  [thread1] waiting for connections on port 51564
然后我得到了如下错误,即
连接被拒绝
,这是正确的,因为它试图连接到不同的端口(27017)


如何确保
mongodb.driver
使用嵌入式mongodb?

EmbeddedMongofAtoryBean
中有一个方法可以使用它来设置所需的端口

/**
 * The port MongoDB should run on. When no port is provided, then some free
 * server port is automatically assigned. The value must be between 0 and 65535.
 */
public void setPort(int port) {
    builder.port(port);
}
试试这个:

@Bean
@Primary
public MongoTemplate mongoTemplate() throws IOException {
    EmbeddedMongoFactoryBean mongo = new EmbeddedMongoFactoryBean();
    mongo.setPort(27017); //here
    mongo.setBindIp(MONGO_DB_URL);
    MongoClient mongoClient = mongo.getObject();
    MongoTemplate mongoTemplate = new MongoTemplate(mongoClient, MONGO_DB_NAME);
    return mongoTemplate;
}
但根据文档,您应该这样做:

@Bean(destroyMethod = "close")
@Profile("local")
MongoClient mongo(){
    return new EmbeddedMongoBuilder().port().bindIp().build();
}

我试过了。但嵌入式mongo仍从随机端口开始
@Bean(destroyMethod = "close")
@Profile("local")
MongoClient mongo(){
    return new EmbeddedMongoBuilder().port().bindIp().build();
}