一、簡介
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]]
其中:
- username和password是可選參數,用於指定連接數據庫時需要的身份驗證。如果不需要身份驗證可以省略。
- 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-hant/n/305141.html