欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

SpringBoot与MongoDB版本对照一览,

来源: javaer 分享于  点击 26365 次 点评:8

SpringBoot与MongoDB版本对照一览,


目录
  • SpringBoot与MongoDB版本对照参考
    • 版本参考
    • 版本查询
  • MongoDB整合Spring的版本选择问题
    • MongoDB Java Driver 的版本
    • MongoDB Java Drriver 2.X版本
    • MongoDB Java Driver 3.X版本
    • 心得
  • 总结

    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对应。

    查询流程如下截图:

    比如:

    SpringBoot版本为2.3.2;

    Spring-boot-starter-data-mongodb版本为:3.0.2

    所以对应的MongoDBServerVersion版本为:4.4.x

    MongoDB整合Spring的版本选择问题

    如果项目使用的是springboot的那就非常轻松,直接一步到位!如果是springmvc的请继续看!

    最近在项目中整合MongoDB,项目用的是Spring,各种报错,找不到方法啊,xml一直报红啊,配置好,运行的时候又是各种错误,各种调试。总算整出来了,整的过程就不说了,这边直接整理一下,什么版本要对应什么版本。方便有需要的朋友能少走一个坑!

    MongoDB的版本没有关系,我都是直接用的最新版,主要问题是,mongoDB的java驱动包版本以及跟spring整合的jar包版本。

    首先来说下MongDB的java驱动包,他有1.X的,2.X的,3.X的,这边1.X的不讨论,太久远了。我们讨论2.X的,和3.X的,这边贴下

    MongoDB Java Driver 的版本

    网页太长。。凑活着看,大概意思就是说分为2.X和3.X版本。

    为了方便大家,这个是Maven仓库网址:https://mvnrepository.com/ 速度还挺快的,方便搜索。

    接下来一一介绍:

    MongoDB Java Drriver 2.X版本

    对应的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配置吧!对应该版本号的:

    <?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
    #认证数据库名
    mongo.authenticationDbname=admin
    #要链接的数据库名
    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版本那就没这个问题。

    所有也要根据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.一定要根据自己spring的版本来选择。

    2.可以看得出来高版本的配置更简洁,安全,方便!

    3.建议选择版本系列里面较新的版本,例如选择了2.X的mongo-java驱动,建议选择用的人多一点的版本,或2.X最新版。

    题外话:配置完以后,我们是通过mongoTemplate对象来进行增删改查的操作。

    只需自动注入:

    @Autowired
    private MongoOperations mongoTemplate;

    这里说下为什么用MongoOperations申明,这是来自官方的解释:

    引用MongoTemplate实例操作的首选方法是通过它的接口MongoOperations。 

    贴个网址,Spring官方的整合MongoDB的教程,可以直接用谷歌翻译看:

    https://docs.spring.io/spring-data/mongodb/docs/2.0.0.RELEASE/reference/html/#mongo.mongo-3

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。

    您可能感兴趣的文章:
    • Springboot双mongodb配置方式
    • 解决springboot中mongodb不启动及Dao不能被扫描到的问题
    • SpringBoot整合MongoDB全过程
    • springboot启动mongoDB报错之禁用mongoDB自动配置问题
    • springboot启动时候报错mongodb问题
    相关栏目:

    用户点评