SpringBoot與MongoDB版本對照一覽
SpringBoot與MongoDB版本對照參考
版本參考
參考地址:https://docs.spring.io/spring-data/mongodb/docs/3.2.4/reference/html/#compatibility.matrix

版本查詢
SpringBoot整合MongoDB時,需要引入spring-boot-starter-data-mongodb依賴,為了保證兼容性,需要pring-boot-starter-data-mongodb版本與MongoDB對應(yīng)。
查詢流程如下截圖:

比如:
SpringBoot版本為2.3.2;
Spring-boot-starter-data-mongodb版本為:3.0.2
所以對應(yīng)的MongoDBServerVersion版本為:4.4.x
MongoDB整合Spring的版本選擇問題
如果項目使用的是springboot的那就非常輕松,直接一步到位!如果是springmvc的請繼續(xù)看!
最近在項目中整合MongoDB,項目用的是Spring,各種報錯,找不到方法啊,xml一直報紅啊,配置好,運行的時候又是各種錯誤,各種調(diào)試??偹阏鰜砹?,整的過程就不說了,這邊直接整理一下,什么版本要對應(yīng)什么版本。方便有需要的朋友能少走一個坑!
MongoDB的版本沒有關(guān)系,我都是直接用的最新版,主要問題是,mongoDB的java驅(qū)動包版本以及跟spring整合的jar包版本。
首先來說下MongDB的java驅(qū)動包,他有1.X的,2.X的,3.X的,這邊1.X的不討論,太久遠了。我們討論2.X的,和3.X的,這邊貼下
MongoDB Java Driver 的版本


網(wǎng)頁太長。。湊活著看,大概意思就是說分為2.X和3.X版本。
為了方便大家,這個是Maven倉庫網(wǎng)址:https://mvnrepository.com/ 速度還挺快的,方便搜索。
接下來一一介紹:
MongoDB Java Drriver 2.X版本
對應(yīng)的Spirng框架版本是4.X的,使用的spring-data-mongodb是1.X的版本。千萬不要選2.x版本。會出問題。
這是maven配置:
<!--MongoBD-Spring整合-->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.14.3</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.10.7.RELEASE</version>
</dependency>接下來是xml文件的頭文件:
這邊就直接貼上我自己的xml配置吧!對應(yīng)該版本號的:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<mongo:mongo replica-set="${mongo.hostport}">
<mongo:options connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}"
max-wait-time="${mongo.maxWaitTime}"
auto-connect-retry="true"
socket-keep-alive="true"
socket-timeout="${mongo.socketTimeout}"
slave-ok="true"
write-number="1"
write-timeout="0"
write-fsync="true"
/>
</mongo:mongo>
<mongo:db-factory username="root" password="root" dbname="admin" mongo-ref="mongo"/>
<bean id="MongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
</beans>我是引用資源文件的,mongodb.properties,這是我的資源文件:
mongo.hostport=127.0.0.1:27017 mongo.connectionsPerHost=8 mongo.threadsAllowedToBlockForConnectionMultiplier=4 #連接超時時間 mongo.connectTimeout=1000 #等待時間 mongo.maxWaitTime=1500 #Socket超時時間 mongo.socketTimeout=1500 #admin登錄信息 mongo.username=root mongo.password=root #DataBaseName #認證數(shù)據(jù)庫名 mongo.authenticationDbname=admin #要鏈接的數(shù)據(jù)庫名 mongo.databaseName=test
ok,都配置好以后,啟動spring容器就能獲取MongTemplate對象,就能進行操作了!這邊就不演示了,接著說下一個版本。
MongoDB Java Driver 3.X版本
跟spring整合的jar包版本是2.0.1.RELEASE,這個是我的maven:
<!--MongoBD-Spring整合-->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>注意!!
如果你用的是這個組的話,你的spring框架必須要用5.X的版本。不然會報 java.lang.NoSuchMethodError: org.springframework.util.Assert.isTrue 的這個錯誤。 說這個方法找不到!如果你的spring框架是5.X版本那就沒這個問題。
所有也要根據(jù)spring的框架版本來選擇。
這個是配置mongdb的xml文件,跟上面那個不同,我直接貼出來了:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<mongo:mongo-client id="mongoClient" replica-set="${mongo.hostport}"
credentials="${mongo.username}:${mongo.password}@${mongo.authenticationDbname}">
<mongo:client-options connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}"
max-wait-time="${mongo.maxWaitTime}"
socket-timeout="${mongo.socketTimeout}"
/>
</mongo:mongo-client>
<mongo:db-factory dbname="${mongo.databaseName}" mongo-ref="mongoClient"/>
<mongo:template db-factory-ref="mongoDbFactory"/>
</beans>心得
1.一定要根據(jù)自己spring的版本來選擇。
2.可以看得出來高版本的配置更簡潔,安全,方便!
3.建議選擇版本系列里面較新的版本,例如選擇了2.X的mongo-java驅(qū)動,建議選擇用的人多一點的版本,或2.X最新版。
題外話:配置完以后,我們是通過mongoTemplate對象來進行增刪改查的操作。
只需自動注入:
@Autowired private MongoOperations mongoTemplate;
這里說下為什么用MongoOperations申明,這是來自官方的解釋:

引用MongoTemplate實例操作的首選方法是通過它的接口MongoOperations。
貼個網(wǎng)址,Spring官方的整合MongoDB的教程,可以直接用谷歌翻譯看:
https://docs.spring.io/spring-data/mongodb/docs/2.0.0.RELEASE/reference/html/#mongo.mongo-3
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java調(diào)用SSE流式接口并流式返回給前端實現(xiàn)打字輸出效果
在Web開發(fā)中,有時我們需要將文件以流的形式返回給前端,下面這篇文章主要給大家介紹了關(guān)于Java調(diào)用SSE流式接口并流式返回給前端實現(xiàn)打字輸出效果的相關(guān)資料,需要的朋友可以參考下2024-08-08
Java中Optional.of()方法及源碼解析(非常詳細!)
這篇文章主要給大家介紹了關(guān)于Java中Optional.of()方法及源碼解析的相關(guān)資料,Java中java.util .Optional類的of()方法用于獲得該Optional類中具有指定類型的指定值的一個實例,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-06-06
SpringBoot整合WebSocket實現(xiàn)后端向前端主動推送消息方式
這篇文章主要介紹了SpringBoot整合WebSocket實現(xiàn)后端向前端主動推送消息方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
關(guān)于Tomcat出現(xiàn)The origin server did not find a current represent
這篇文章主要介紹了關(guān)于Tomcat出現(xiàn)The origin server did not find a current representation for the target resourc...的問題,感興趣的小伙伴們可以參考一下2020-08-08
spring boot 使用@Async實現(xiàn)異步調(diào)用方法
本篇文章主要介紹了spring boot 使用@Async實現(xiàn)異步調(diào)用方法,具有一定的參考價值,有興趣的可以了解一下。2017-04-04

