簡體   English   中英

Spring 引導和 MongoDB:始終連接到數據庫“測試”

[英]Spring boot and MongoDB: always connect to database "test"

我在我的 spring 引導應用程序中配置 mongoDB,如下所示:

@Configuration
@SpringBootApplication
public class ConfigDbApp extends SpringBootServletInitializer {

    @Value("${myapp.mongodb.uri}")
    private String mongoDbUri;

    [...]

    @Bean
    public MongoClient mongoClient() {
        MongoClientSettings mongoClientSettings = MongoClientSettings.builder()
            .applyConnectionString(new ConnectionString(mongoDbUri.trim()))
            .build();
        return MongoClients.create(mongoClientSettings);        
    }

    [...]
    
}

數據庫 uri 是:

myapp.mongodb.uri=mongodb://localhost:27017/myApp?sslInvalidHostNameAllowed=true&streamType=netty&ssl=false

連接很好,但不是連接到“myApp”數據庫,而是連接到“test”數據庫(默認)。 如果我使用 spring 屬性:

spring.data.mongodb.uri=mongodb://localhost:27017/myApp?sslInvalidHostNameAllowed=true&streamType=netty&ssl=false

它運行良好,但我不想使用它,因為我可以在同一台服務器上使用不同的應用程序讀取相同的配置文件。

任何建議表示贊賞,謝謝。

這對我有用:覆蓋數據庫名稱

@Configuration
public class MongoConfig extends AbstractMongoClientConfiguration {

    @Value("${spring.data.mongodb.uri}")
    private String uri;
    @Value("${spring.data.mongodb.database}")
    private String database;

    @Override
    protected String getDatabaseName() {
        return database;
    }

    @Bean
    @Override
    public MongoClient mongoClient() {
        final ConnectionString connectionString = new ConnectionString(uri);
        final MongoClientSettings.Builder mongoClientSettings = MongoClientSettings.builder().applyConnectionString(connectionString)
                .applyToConnectionPoolSettings(builder -> builder.applySettings(connectionPoolSettings()));
        return MongoClients.create(mongoClientSettings.build());
    }



    private ConnectionPoolSettings connectionPoolSettings() {
        return ConnectionPoolSettings.builder()
                .maxSize(50)
                .maxWaitTime(20, TimeUnit.SECONDS)
                .maxConnectionIdleTime(20, TimeUnit.SECONDS)
                .maxConnectionLifeTime(60, TimeUnit.SECONDS).build();
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM