13、MongoDB--通过 SpringBoot 整合 Spring Data MongoDB(【连接多个 MongoDB 服务器】、【高级定制 MongoDB 客户端】的简单介绍)

连接多个MongoDB服务器

放弃 Spring Boot 为 MongeDB 提供的自动配置,接下来同样要干如下事情:

手动配置多组 ReactiveMongoDatabaseFactory 和 ReactiveMongoTemplate,要连几个 MongoDB 服务器就配置几组。
同步 API 则使用 MongoDatabaseFactory 和 MongoTemplate。

针对不同 MongoDB 服务器,分别开发相应的 DAO 组件类,建议将它们放在不同的包下以便区分。

使用@EnableReactiveMongoRepositories注解手动开启DAO组件扫描。

同步API则使用@EnableMongoRepositories。类似于@EnableJpaRepositories注解。

使用 @EnableReactiveMongoRepositories 注解时要指定如下两个属性:

1、basePackages:指定扫描哪个包下的DAO组件。

2、reactiveMongoTemplateRef:指定使用哪个 ReactiveMongoTemplate 来实现 DAO 组件的方法。

同步 API 则使用 mongoTemplateRef 来指定引用 mongoTemplate 。



高级定制MongoDB客户端

若要完全控制连接 MongoDB 的过程,除了可在容器中配置自己的 ReactiveMongoDatabaseFactory 或 MongoDatabaseFactory 之外,配置自己的 MongoClient 也行。
MongoDatabaseFactory 或 ReactiveMongoDatabaseFactory 只是对 MongoClient的包装。

Spring Boot 通过 MongoClientSettings 创建自动配置的 MongoClient,
如果在容器中定义了自己的 MongoClientSettings ,
Spring Boot 将直接使用该 MongoClientSettings 来创建 MongoClient,
此时所有 spring.data.mongodb.* 属性都会被忽略。

如果没有配置自己的 MongoClientSettings,Spring Boot 就会读取并应用 spring.data.mongodb.* 开头的配置属性,
用于创建自动配置的 MongoClientSettings。

不管是容器自动配置的 MongoClientSettings,还是你手动配置的 MongoClientSettings,
都可在容器中部署一个或多个 MongoClientSettingsBuilderCustomizer 实现类的 Bean,
该 Bean 在实现接口中 customize(builder) 方法时,就可对 MongoClientSettings 进行自己的定制。

       DAO组件
         ↑
 MongoDatabaseFactory 和 MongoTemplate(反应式要加Reactive)
         ↑
     MongoClient      可在容器中配置自己的MongoClient来代替自动配置的MongoClient。
         ↑
  MongoClientSettings(原本它会读取application.properties文件) 也可用自己配置的MongoClientSettingsBean来代替它。

【MongoClientSettings】负责创建【MongoClient】;

【MongoClient】负责创建【MongoDatabaseFactory】和【MongoTemplate】;

通过【MongoDatabaseFactory】或者【MongoTemplate】来创建【DAO组件】;

MongoClientSettingsBuilderCustomizer —— 专门用于对容器中的 MongoClientSettings 进行定制,
因此可通过在容器中部署 MongoClientSettingsBuilderCustomizer 来定制 MongoClientSettings 。

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_L_J_H_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值