詳解spring.data.mongodb.uri

一、簡介

Spring Data MongoDB是Spring Data項目的一部分,提供了許多用於與MongoDB交互的特性。而spring.data.mongodb.uri則是其中用於配置MongoDB連接的一個參數。

二、連接字元串格式

spring.data.mongodb.uri的值是一個字元串類型的參數,格式如下:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

其中:

  • usernamepassword是可選參數,用於指定連接資料庫時需要的身份驗證。如果不需要身份驗證可以省略。
  • host指定MongoDB伺服器所在的主機名或IP地址。如果有多個,則以逗號分隔。
  • port指定MongoDB伺服器的埠號,默認為27017。如果指定了多個host,則該埠號應該對應第一個host。
  • database指定連接的資料庫名稱。如果省略,則默認連接到admin資料庫。
  • options是一些可選的連接參數。

三、連接參數

在連接字元串中,可以通過options參數指定若干連接參數,語法格式為key=value。下面是一些常用的連接參數:

  • authSource:指定身份驗證信息所在的資料庫。如果省略,則默認使用database參數指定的資料庫。
  • ssl:啟用SSL加密傳輸。默認為false。
  • connectTimeoutMS:連接超時時間,單位為毫秒。默認為10000。
  • socketTimeoutMS:套接字超時時間,單位為毫秒。默認為0,表示不超時。
  • maxPoolSize:最大連接池大小。默認為100。
  • minPoolSize:最小連接池大小。默認為0。
  • maxIdleTimeMS:最大空閑時間,單位為毫秒。默認為0,表示不限制。
  • waitQueueMultiple:等待隊列倍數。默認為5。
  • waitQueueTimeoutMS:等待隊列超時時間,單位為毫秒。默認為120000。
  • readPreference:讀取首選項,支持primary、primaryPreferred、secondary、secondaryPreferred和nearest五個值。
  • readConcernLevel:讀取關注級別,支持local、majority和linearizable三個值。
  • writeConcern:寫入關注級別,支持majority、(tagSetName: {tag1: value1, tag2: value2})和{w: 1, j: true, fsync: true}三種格式。

四、示例代碼

下面是一個使用spring.data.mongodb.uri連接MongoDB的示例代碼:

@Configuration
public class AppConfig {
    @Bean
    public MongoClientFactoryBean mongo() {
        MongoClientFactoryBean mongo = new MongoClientFactoryBean();
        mongo.setUri("mongodb://localhost/test?maxPoolSize=100&ssl=false");
        return mongo;
    }

    @Bean
    public MongoTemplate mongoTemplate(MongoClient mongoClient) {
        MongoTemplate template = new MongoTemplate(mongoClient, "test");
        return template;
    }
}

在上面的代碼中,我們使用MongoClientFactoryBean類創建一個MongoClient實例,通過setUri方法指定連接字元串。同時,我們還可以通過參數的方式指定連接參數,例如:

mongo.setMongoClientOptions(MongoClientOptions.builder().sslEnabled(false).connectionsPerHost(100).build());

注意,在使用spring.data.mongodb.uri時,我們不需要對MongoClientOptions等參數進行手動設置。Spring會自動識別連接字元串中包含的參數,並設置對應的參數。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/305141.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-01 11:06
下一篇 2025-01-01 11:06

相關推薦

發表回復

登錄後才能評論