文章目录
一、需求背景
MongoDB 是一个基于分布式存储的数据库,具备开源、高性能等特点,是当前 NoSQL 数据库中比较热门的一种。
同 MySQL 一样,SpringBoot 对 MongoDB 单数据源已经实现了很好的集成,大部分情况下都可以满足用户的需求。
但本次我们的需求是在 SpringBoot 项目中实现 MongoDB 多数据源配置,这就需要我们在原生 API 的基础上做一些改造,详情请见下文分解。
二、实现步骤
1. 添加依赖
第一步,需要在 pom.xml 文件中添加如下依赖:
<!-- MongoDB -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<!-- 自定义配置依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
2. 修改配置文件
第二步,在配置文件 application.properties 中添加多数据源的信息:
spring.data.mongodb.database=admin
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.authenticationDatabase=admin
spring.data.mongodb.username=mongodb
spring.data.mongodb.password=mongodb
spring.data.mongodb.primary.database=primary_data
spring.data.mongodb.primary.host=127.0.0.1
spring.data.mongodb.primary.port=27017
spring.data.mongodb.primary.authenticationDatabase=admin
spring.data.mongodb.primary.username=mongodb
spring.data.mongodb.primary.password=mongodb
spring.data.mongodb.secondary.database=secondary_data
spring.data.mongodb.secondary.host=127.0.0.1
spring.data.mongodb.secondary.port=27017
spring.data.mongodb.secondary.authenticationDatabase=admin
spring.data.mongodb.secondary.username=mongodb
spring.data.mongodb.secondary.password=mongodb
需要注意的是,除了新增的 primary 与 secondary 数据源,原生的数据源也需进行正确配置。因为 SpringBoot 启动时会默认连接原生数据源,若没有正确配置,程序会抛出连接异常。当然,这个异常不会对程序其他部分造成影响。
3. 重建数据源配置类
第三步,需要重建数据源配置类,以替代默认的配置类 MongoProperties。
首先,创建数据源配置基类 AbstractMongoConfigure。
AbstractMongoConfigure
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb
1450



被折叠的 条评论
为什么被折叠?



