Spring Boot中的Mongodb多數據源擴展


在日常工作中,我們通過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/spring-boot-starter-mongodb-pool

首先還是簡單的介紹下如何使用:

配置倉庫地址:

<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

猿天地


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM