详解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/n/305141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-01 11:06
下一篇 2025-01-01 11:06

相关推荐

发表回复

登录后才能评论