一、简介
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/n/305141.html