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的不討論,太久遠(yuǎn)了。我們討論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 #認(rèn)證數(shù)據(jù)庫名 mongo.authenticationDbname=admin #要鏈接的數(shù)據(jù)庫名 mongo.databaseName=test
ok,都配置好以后,啟動spring容器就能獲取MongTemplate對象,就能進(jìn)行操作了!這邊就不演示了,接著說下一個版本。
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對象來進(jìn)行增刪改查的操作。
只需自動注入:
@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-08Java中Optional.of()方法及源碼解析(非常詳細(xì)!)
這篇文章主要給大家介紹了關(guān)于Java中Optional.of()方法及源碼解析的相關(guān)資料,Java中java.util .Optional類的of()方法用于獲得該Optional類中具有指定類型的指定值的一個實例,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06SpringBoot整合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在springboot中使用AOP進(jìn)行全局日志記錄
這篇文章主要介紹就在springboot中使用AOP進(jìn)行全局日志記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11spring boot 使用@Async實現(xiàn)異步調(diào)用方法
本篇文章主要介紹了spring boot 使用@Async實現(xiàn)異步調(diào)用方法,具有一定的參考價值,有興趣的可以了解一下。2017-04-04