开源 Spring Boot 中 Mongodb 多数据源扩展框架

Posted 猿天地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源 Spring Boot 中 Mongodb 多数据源扩展框架相关的知识,希望对你有一定的参考价值。

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

然后配置连接信息如下:

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

或者

 
   
   
 
  1. pring.data.mongodb.authentication-database= # Authentication database name.

  2. spring.data.mongodb.database=test # Database name.

  3. spring.data.mongodb.host=localhost # Mongo server host.

  4. spring.data.mongodb.password= # Login password of the mongo server.

  5. spring.data.mongodb.port=27017 # Mongo server port.

  6. spring.data.mongodb.username= # Login user of the mongo server.

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

之前关于多数据源的使用写了篇文章:

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

Github(请为我加颗星): https://github.com/yinjihuan/spring-boot-starter-mongodb-pool

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

 
   
   
 
  1. <repositories>

  2.    <repository>

  3.        <id>jitpack.io</id>

  4.        <url>https://www.jitpack.io</url>

  5.    </repository>

  6. </repositories>

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

 
   
   
 
  1. <dependency>

  2.    <groupId>com.github.yinjihuan</groupId>

  3.    <artifactId>spring-boot-starter-mongodb-pool</artifactId>

  4.    <version>2.0.2</version>

  5. </dependency>

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

URI配置集群

 
   
   
 
  1. spring.data.mongodb.testMongoTemplate.uri=localhost:27017,localhost:27018

  2. spring.data.mongodb.testMongoTemplate.username=yinjihuan

  3. spring.data.mongodb.testMongoTemplate.password=123456

  4. spring.data.mongodb.testMongoTemplate.database=test

  5. spring.data.mongodb.testMongoTemplate.authenticationDatabase=admin

HOST方式配置

 
   
   
 
  1. spring.data.mongodb.testMongoTemplate.host=localhost

  2. spring.data.mongodb.testMongoTemplate.port=27017

  3. spring.data.mongodb.testMongoTemplate.database=test

  4. spring.data.mongodb.testMongoTemplate.username=yinjihuan

  5. spring.data.mongodb.testMongoTemplate.password=123456

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

 
   
   
 
  1. @Autowired

  2. @Qualifier("testMongoTemplate")

  3. private MongoTemplate testMongoTemplate;

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

 
   
   
 
  1. spring.data.mongodb.testMongoTemplate.host=localhost

  2. spring.data.mongodb.testMongoTemplate.port=27017

  3. spring.data.mongodb.testMongoTemplate.database=test

  4. spring.data.mongodb.testMongoTemplate.username=yinjihuan

  5. spring.data.mongodb.testMongoTemplate.password=123456


  6. spring.data.mongodb.test2MongoTemplate.host=localhost

  7. spring.data.mongodb.test2MongoTemplate.port=27017

  8. spring.data.mongodb.test2MongoTemplate.database=test2

  9. spring.data.mongodb.test2MongoTemplate.username=yinjihuan

  10. spring.data.mongodb.test2MongoTemplate.password=123456

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

 
   
   
 
  1. @Autowired

  2. @Qualifier("testMongoTemplate")

  3. private MongoTemplate testMongoTemplate;


  4. @Autowired

  5. @Qualifier("test2MongoTemplate")

  6. private MongoTemplate test2MongoTemplate;

更新说明

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

  • 加上用户认证配置 第一个版本1.0.0中没有加账号密码认证逻辑

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

更多技术分享尽在微信群,加群请加我微信 jihuan900。


加入星球特权

1、实战分库分表中间件Sharding-JDBC

2、实战分布式任务调度框架Elastic Job

3、配置中心Apollo实战

4、高并发解决方案之缓存

5、更多课程等你来解锁,20+课程

点个“好看”你懂得!

以上是关于开源 Spring Boot 中 Mongodb 多数据源扩展框架的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot整合Mongodb

Spring Boot2 系列教程 (十八) | 整合 MongoDB

Spring Boot 从入门到精通整合 MongoDB 实现读写非关系型数据库

Spring Boot:Spring Boot 中 MongoDB 的使用

如何在 spring-boot 中禁用 spring-data-mongodb 自动配置

spring boot 中添加mongodb支持