Spring-Boot中的Mongodb多数据源扩展

26次阅读

共计 2786 个字符,预计需要花费 7 分钟才能阅读完成。

在日常工作中,我们通过 Spring Data Mongodb 来操作 Mongodb 数据库,在 Spring Boot 中只需要引入 spring-boot-starter-data-mongodb 即可。

然后配置连接信息如下:

spring.data.mongodb.uri=mongodb://localhost:27017/test

或者

pring.data.mongodb.authentication-database= # Authentication database name.
spring.data.mongodb.database=test # Database name.
spring.data.mongodb.host=localhost # Mongo server host.
spring.data.mongodb.password= # Login password of the mongo server.
spring.data.mongodb.port=27017 # Mongo server port.
spring.data.mongodb.username= # Login user of the mongo server.

spring-boot-starter-data-mongodb 提供了两种配置方式,分别是 uri 和 host 方式。uri 可以配置多个地址,也就是集群的配置方式。host 只能连接一个节点。

当在一个项目中需要连接多个数据库的时候,spring-boot-starter-data-mongodb 的自动配置无法满足需求,所以我这边封装了一个多数据源的 Mongodb spring-boot-starter。

之前关于多数据源的使用写了篇文章:spring-boot-starter-mongodb-pool

由于是第一个版本,有些东西没考虑到,最近更新了下,加了一些内容,升级到 Spring Boot 2.0 版本。

Github:https://github.com/yinjihuan/…

首先还是简单的介绍下如何使用:

配置仓库地址:

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://www.jitpack.io</url>
    </repository>
</repositories>

配置最新版本,只支持 Spring Boot 2.0

<dependency>
    <groupId>com.github.yinjihuan</groupId>
    <artifactId>spring-boot-starter-mongodb-pool</artifactId>
    <version>2.0.2</version>
</dependency>

我这边配置方式也是 uri 和 host 两种,uri 的话是只配置 mongo 节点信息,跟默认的 uri 格式不一样,不包含用户信息和连接参数。

URI 配置集群

spring.data.mongodb.testMongoTemplate.uri=localhost:27017,localhost:27018
spring.data.mongodb.testMongoTemplate.username=yinjihuan
spring.data.mongodb.testMongoTemplate.password=123456
spring.data.mongodb.testMongoTemplate.database=test
spring.data.mongodb.testMongoTemplate.authenticationDatabase=admin

HOST 方式配置

spring.data.mongodb.testMongoTemplate.host=localhost
spring.data.mongodb.testMongoTemplate.port=27017
spring.data.mongodb.testMongoTemplate.database=test
spring.data.mongodb.testMongoTemplate.username=yinjihuan
spring.data.mongodb.testMongoTemplate.password=123456

testMongoTemplate 就是我们用来操作 test 数据库的 MongoTemplate 对象,框架会自动为你创建好,只需要注入使用就可以了。

@Autowired
@Qualifier("testMongoTemplate")
private MongoTemplate testMongoTemplate;

多数据源就配置多个 MongoTemplate 就行了,比如:

spring.data.mongodb.testMongoTemplate.host=localhost
spring.data.mongodb.testMongoTemplate.port=27017
spring.data.mongodb.testMongoTemplate.database=test
spring.data.mongodb.testMongoTemplate.username=yinjihuan
spring.data.mongodb.testMongoTemplate.password=123456

spring.data.mongodb.test2MongoTemplate.host=localhost
spring.data.mongodb.test2MongoTemplate.port=27017
spring.data.mongodb.test2MongoTemplate.database=test2
spring.data.mongodb.test2MongoTemplate.username=yinjihuan
spring.data.mongodb.test2MongoTemplate.password=123456

操作哪个数据库就注入哪个对象:

@Autowired
@Qualifier("testMongoTemplate")
private MongoTemplate testMongoTemplate;

@Autowired
@Qualifier("test2MongoTemplate")
private MongoTemplate test2MongoTemplate;

更新说明

  • 支持 Spring Boot 2.x 版本

第一个版本 1.0.0 只支持 Spring Boot 的 1.x 版本

  • 加上用户认证配置

第一个版本 1.0.0 中没有加账号密码认证逻辑

  • 支持集群地址配置

通过 uri 配置集群信息

想了解框架实现细节的请移步:http://cxytiandi.com/course

正文完
 0