在日常工作中,我們通過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:github.com/yinjihuan/s…
首先還是簡單的介紹下如何使用:
配置倉庫地址:
<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配置叢集資訊
想了解框架實現細節的請移步:cxytiandi.com/course