日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring+mongodb集群集成(吐血教程) 转自:http://blog.csdn.net/qq_16497617/article/details/52817335

發布時間:2024/9/27 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring+mongodb集群集成(吐血教程) 转自:http://blog.csdn.net/qq_16497617/article/details/52817335 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前一篇文章中介紹了在window系統下部署mongodb集群,按照教程一步步實現的話應該都可以在本機部署成功了,上篇文章末尾也提到了,想集成到SSM框架中去,網上資料基本都是單個mongodb數據庫的,集群的例子很少,有幾個也殘缺不全,抽時間研究了一下,最終在SSM框架中成功集成,在文章末尾我會把spring中集成的源代碼發一下,SSM框架中集成基本類似,其實主要就是jar包問題,單個mongodb集成實例,這篇文章寫得很詳細,我也是根據這篇文章改編的。

單個數據庫連接:<mongo:mongo host="192.168.1.141" port="27017"/>

集群連接:

[java] view plain copy
  • <context:property-placeholder?location="classpath*:mongodb.properties"?/>???
  • ?????????<mongo:mongo?id="mongo"?replica-set="${mongo.config.replica.set.address}">????
  • ?????????<mongo:options?connections-per-host="100"??
  • ????threads-allowed-to-block-for-connection-multiplier="50"??
  • ????auto-connect-retry="true"/>??
  • ???????
  • ????</mongo:mongo>???

  • 集群與單個連接相比只是加了個replice-set屬性,但是因為jar包的問題可能導致不支持,


    修改這個jar包后會發現各種jar包報錯,一個一個改下來,最后如下:


    特別要注意的是:jar包不同配置文件中的寫法是不一樣的,同時,在代碼中的增刪改查的方法參數的順序也是不一樣的,特別蛋疼。。。。

    下面上集群的目錄樹結構:



    首先是MongoTest類,程序入口:


    [java] view plain copy
  • package?com.mongo.test;??
  • ??
  • import?java.util.List;??
  • import?org.apache.commons.logging.Log;??
  • import?org.apache.commons.logging.LogFactory;??
  • import?org.springframework.context.ApplicationContext;??
  • import?org.springframework.context.support.ClassPathXmlApplicationContext;??
  • import?com.mongo.bean.Person;??
  • import?com.mongo.dao.AbstractRepository;??
  • import?com.mongo.dao.impl.PersonRepository;??
  • ??
  • /**?
  • ?*?Spring+MongoDB集群集成實例?
  • ?*?@author?YinGuiChun?
  • ?*?@date?20161014?
  • ?*/??
  • public?class?MongoTest?{??
  • ??
  • ????private?static?Log?log?=?LogFactory.getLog(MongoTest.class.getName());??
  • ??????
  • ????private??AbstractRepository?pr=null;??
  • ??????
  • ????/**初始化*/??
  • ????public?void?init(){??
  • ?????????log.debug("開始啟動");??
  • ?????????ApplicationContext?ctx?=?new?ClassPathXmlApplicationContext("applicationContext.xml");??
  • ??????????pr=?(PersonRepository)ctx.getBean("personRepository");??
  • ????}??
  • ????/**添加*/??
  • ????public?void?insert(){??
  • ????????for(int?i=0;i<5;i++){??
  • ????????????Person?p=new?Person("name"+i,i);//插入姓名和年齡??
  • ?????????????pr.insert(p);??
  • ?????????????log.debug("添加成功");??
  • ????????}??
  • ??????????
  • ????}??
  • ????/**刪除一條信息*/??
  • ????public?void?deleteOne(){??
  • ????????String?id="57edd4506ab8e4b1f9e99e02";??
  • ????????pr.removeOne(id);??
  • ????????Person?p=?pr.findOne(id);??
  • ????????log.debug(p);??
  • ????}??
  • ????/**刪除多條信息*/??
  • ????public?void?removeAll(){??
  • ????????pr.removeAll();??
  • ????}??
  • ????/**根據輸入的ID查找對象*/??
  • ????public?void?findOne(){??
  • ????????String?id="57edd4506ab8e4b1f9e99e01";??
  • ????????Person?p=?pr.findOne(id);??
  • ????????log.debug(p);??
  • ????}??
  • ????/**查詢所有*/??
  • ????public?void?listAll(){??
  • ????????List<Person>?list=pr.findAll();??
  • ????????log.debug("查詢結果如下:");??
  • ????????for?(Person?p:list){??
  • ????????????log.debug(p.toString());??
  • ????????}??
  • ????}??
  • ??????
  • ????public?void?findAndModify(){??
  • ????????String?id="57f9f163d12818b23aa3dbf9";??
  • ????????Person?p=?pr.findOne(id);??
  • ????????p.setName("upda");??
  • ????????pr.insert(p);??
  • ????}??
  • ??????
  • ????/**測試方法*/??
  • ????public?void?start(){??
  • ????????init();??
  • //??????insert();//添加數據??
  • //??????deleteOne();//刪除單條數據??
  • //??????removeAll();//刪除所有數據??
  • //??????findOne();//查詢單條數據??
  • ????????listAll();//查詢所有數據??
  • //??????findAndModify();??
  • ????}??
  • ??????
  • ????/**main函數*/??
  • ????public?static?void?main(String[]?args)?{??
  • ????????MongoTest?t=new?MongoTest();??
  • ????????t.start();??
  • ????}??
  • ??
  • }??

  • 在mongodb環境搭建好之后,程序運行首先運行insert()方法,,插入幾條數據,然后用可視化工具連上mongodb庫看下是否數據已經插入,在執行listAll(),查詢所有方法,看下控制臺是否有數據輸出,如果能正常輸出,就說明你這個集成成功了一半了,關閉一個庫試試,數據如果還有的話,那肯定是已經集成成功了。繼續上代碼:


    AbstractRepository.java

    [java] view plain copy
  • package?com.mongo.dao;??
  • ??
  • import?java.util.List;??
  • import?com.mongo.bean.Person;??
  • ??
  • public?interface?AbstractRepository?{??
  • ??????
  • ????/**?
  • ?????*?添加對象?
  • ?????*/??
  • ????public?void?insert(Person?person);???
  • ??????
  • ????/**?
  • ?????*根據ID查找對象?
  • ?????*/??
  • ????public?Person?findOne(String?id);?????
  • ????/**?
  • ?????*?查詢所有?
  • ?????*/??
  • ????public?List<Person>?findAll();?????
  • ??????
  • ????public?List<Person>?findByRegex(String?regex);??
  • ????/**?
  • ?????*?刪除指定的ID對象?
  • ?????*/??
  • ????public?void?removeOne(String?name);?????
  • ????/**?
  • ?????*?刪除所有?
  • ?????*/??
  • ????public?void?removeAll();?????
  • ????/**?
  • ?????*?通過name找到并修改?
  • ?????*/??
  • ????public?void?findAndModify(String?id);??
  • ??
  • ??????
  • ??
  • ??????
  • }??

  • PersonRepository.java
    [java] view plain copy
  • package?com.mongo.dao.impl;??
  • ??
  • import?java.util.List;??
  • import?java.util.regex.Pattern;??
  • import?org.springframework.data.mongodb.core.MongoTemplate;??
  • import?org.springframework.data.mongodb.core.query.Criteria;??
  • import?org.springframework.data.mongodb.core.query.Query;??
  • import?org.springframework.data.mongodb.core.query.Update;??
  • import?com.mongo.bean.Person;??
  • import?com.mongo.dao.AbstractRepository;??
  • ??
  • public?class?PersonRepository?implements?AbstractRepository?{??
  • ??
  • ????protected?MongoTemplate?mongoTemplate;????
  • ??
  • ????public?List<Person>?findAll()?{??
  • ????????return?getMongoTemplate().find(new?Query(),?Person.class,"personTest");?????
  • ??
  • ????}??
  • ??????
  • ????/**修改符合條件的第一條記錄*/??
  • ????public?void?findAndModify(String?id)?{??
  • ????????Query?myQuery=new?Query(Criteria.where("id").is(id));??
  • ????????System.out.println(myQuery.toString());??
  • ????????getMongoTemplate().updateFirst(myQuery,?Update.update("age",?34),"personTest");??
  • ??????????
  • ????}??
  • ??
  • ????public?List<Person>?findByRegex(String?regex)?{??
  • ?????????Pattern?pattern?=?Pattern.compile(regex,Pattern.CASE_INSENSITIVE);?????
  • ??????????Criteria?criteria?=?new?Criteria("name").regex(pattern.toString());?????
  • ????????????return?getMongoTemplate().find(new?Query(criteria),?Person.class,"personTest");?????
  • ??
  • ????}??
  • ??
  • ????public?Person?findOne(String?id)?{??
  • ?????????return?getMongoTemplate().findOne(new?Query(Criteria.where("id").is(id)),?Person.class,"personTest");?????
  • ??
  • ????}??
  • ??
  • ????public?void?insert(Person?person)?{??
  • ????????getMongoTemplate().save(?person,"personTest");??
  • ????}??
  • ??
  • ????public?void?removeAll()?{??
  • ????????List<Person>?list?=?this.findAll();?????
  • ????????if(list?!=?null){?????
  • ????????????for(Person?person?:?list){?????
  • ????????????????getMongoTemplate().remove(person);??
  • ????????????}?????
  • ????????}?????
  • ??
  • ????}??
  • ??
  • ????public?void?removeOne(String?id)?{??
  • ????????Criteria?criteria?=?Criteria.where("id").in(id);?????
  • ????????if(criteria?!=?null){?????
  • ?????????????Query?query?=?new?Query(criteria);?????
  • ?????????????if(query?!=?null){??
  • ?????????????getMongoTemplate().remove(?query,?Person.class,"personTest");??
  • ?????????????}??
  • ????????}?????
  • ??
  • ????}??
  • ??
  • ????public?MongoTemplate?getMongoTemplate()?{??
  • ????????return?mongoTemplate;??
  • ????}??
  • ??
  • ????public?void?setMongoTemplate(MongoTemplate?mongoTemplate)?{??
  • ????????this.mongoTemplate?=?mongoTemplate;??
  • ????}??
  • ??????
  • ??
  • }??

  • Person.java
    [java] view plain copy
  • package?com.mongo.bean;??
  • ??
  • import?java.io.Serializable;??
  • ??
  • public?class?Person?implements?Serializable?{??
  • ??
  • ??????
  • ????private?static?final?long?serialVersionUID?=?3617931430808763429L;??
  • ??????
  • ????private?String?id;?????
  • ????private?String?name;?????
  • ????private?int?age;??
  • ????public?Person()?{??
  • ????????super();??
  • ????}??
  • ????public?Person(String?id,?String?name,?int?age)?{??
  • ????????super();??
  • ????????this.id?=?id;??
  • ????????this.name?=?name;??
  • ????????this.age?=?age;??
  • ????}??
  • ????/**?
  • ?????*?@return?the?id?
  • ?????*/??
  • ????public?String?getId()?{??
  • ????????return?id;??
  • ????}??
  • ????/**?
  • ?????*?@param?id?the?id?to?set?
  • ?????*/??
  • ????public?void?setId(String?id)?{??
  • ????????this.id?=?id;??
  • ????}??
  • ????/**?
  • ?????*?@return?the?name?
  • ?????*/??
  • ????public?String?getName()?{??
  • ????????return?name;??
  • ????}??
  • ????/**?
  • ?????*?@param?name?the?name?to?set?
  • ?????*/??
  • ????public?void?setName(String?name)?{??
  • ????????this.name?=?name;??
  • ????}??
  • ????/**?
  • ?????*?@return?the?age?
  • ?????*/??
  • ????public?int?getAge()?{??
  • ????????return?age;??
  • ????}??
  • ????/**?
  • ?????*?@param?age?the?age?to?set?
  • ?????*/??
  • ????public?void?setAge(int?age)?{??
  • ????????this.age?=?age;??
  • ????}??
  • ????/**?
  • ?????*??
  • ?????*?@param?name?
  • ?????*?@param?age?
  • ?????*/??
  • ????public?Person(String?name,?int?age)?{??
  • ????????super();??
  • ????????this.name?=?name;??
  • ????????this.age?=?age;??
  • ????}?????
  • ??
  • ?????public?String?toString()?{?????
  • ????????????return?"Person[id="+id+",name="+name+",age="+age+"]";?????
  • ????????}?????
  • ??
  • ??
  • }??

  • applicationContext.xml [java] view plain copy
  • <?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:context="http://www.springframework.org/schema/context"????
  • ??????????xmlns:mongo="http://www.springframework.org/schema/data/mongo"????
  • ??????????xsi:schemaLocation="http://www.springframework.org/schema/context?????
  • ??????????http://www.springframework.org/schema/context/spring-context-3.0.xsd?????
  • ??????????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">???
  • ????????????
  • ????<context:property-placeholder?location="classpath*:mongodb.properties"?/>???
  • ?????????<mongo:mongo?id="mongo"?replica-set="${mongo.config.replica.set.address}">????
  • ?????????<mongo:options?connections-per-host="100"??
  • ????threads-allowed-to-block-for-connection-multiplier="50"??
  • ????auto-connect-retry="true"/>??
  • ???????
  • ????</mongo:mongo>????
  • ??????
  • ???????<bean?id="mongoTemplate"?class="org.springframework.data.mongodb.core.MongoTemplate">?????
  • ????????<constructor-arg?ref="mongo"/>?????
  • ????????<constructor-arg?name="databaseName"?value="dbTest"/>?????
  • ??????</bean>?????
  • ??????
  • ?????<bean?id="personRepository"?class="com.mongo.dao.impl.PersonRepository">?????
  • ????????<property?name="mongoTemplate"?ref="mongoTemplate"></property>?????
  • ????</bean>?????
  • ??????
  • ?????<context:annotation-config?/>??
  • ??????????
  • </beans>???
  • ??????

  • mongodb.properties
    [java] view plain copy
  • mongo.config.replica.set.address=192.168.1.141:27017,192.168.1.141:27018??
  • mongo.config.replica.set.name=testrs??
  • mongo.config.database=dbTest??

  • testrs是上一篇中集群給每個服務器添加的自定義標示,有的配置文件中會用到,我這里沒用到

    dbTest是我的數據庫名,也是沒用到,我這個配置文件只是一個簡化版的,很多參數都省略了, 實際上只需要一個地址就行,單機和集群配置文件的區別就是這個


    用到的所有jar包,在http://mvnrepository.com都可以下載到:

    commons-beanutils-1.8.3.jar
    commons-codec-1.3.jar
    commons-collections-3.2.1.jar
    commons-io-1.3.2.jar
    commons-lang-2.5.jar
    commons-logging.jar
    commons-pool-1.4.jar
    log4j-1.2.14.jar
    mongo-java-driver-2.14.3.jar
    slf4j-api-1.5.6.jar
    slf4j-log4j12-1.5.6.jar
    spring-aop-4.3.3.RELEASE.jar
    spring-asm-3.2.0.M1.jar
    spring-aspects-4.3.3.RELEASE.jar
    spring-beans-4.3.3.RELEASE.jar
    spring-context-4.3.3.RELEASE.jar
    spring-context-support-4.3.3.RELEASE.jar
    spring-core-4.3.3.RELEASE.jar
    spring-data-commons-1.12.4.RELEASE.jar
    spring-data-mongodb-1.9.4.RELEASE.jar
    spring-data-mongodb-cross-store-1.9.4.RELEASE.jar
    spring-data-mongodb-log4j-1.0.0.M2.jar
    spring-expression-4.3.3.RELEASE.jar
    spring-jdbc-4.3.3.RELEASE.jar
    spring-tx-4.3.3.RELEASE.jar


    最后附上兩套源碼下載地址:

    兩套源碼下載地址

    希望大家都能集成成功,技術交流群:148797838

    關注公眾號不定期發送各種源碼、架構福利

    總結

    以上是生活随笔為你收集整理的Spring+mongodb集群集成(吐血教程) 转自:http://blog.csdn.net/qq_16497617/article/details/52817335的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。