ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:458.08KB ,
资源ID:2952834      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2952834.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java实战操作MongoDB集群.docx)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Java实战操作MongoDB集群.docx

1、本文的原文地址是:http:/ 提供了 MongoDB 操作的工具:MongoTemplate,使得在 Spring 环境下对 MongoDB 的操作更为便利,本章我们就来学一下如何用MongoTemplate 对 MongoDB 的集群环境(副本集)做操作;实战环境选用 Docker本次实战,Web 工程和 MongoDB 都运行在 Docker 环境的容器中,这么做是为了快速搭建环境,不要在环境上花费太多时间,更聚焦 Java 开发;Java 源码本次实战的 java 工程的源码我已经上传到 github 了,地址是::zq2599/blog_demos.git,里面有多个工程,本次实战的

2、工程是 mongodbreplicationdemo,如下图红框所示: 环境规划本次实战的环境是一个 Tomcat server 和 Mongodb 集群(副本集),我们将在 Docker 下部署这些 server,所以一共要运行以下四个容器:容器名 ip 备注m0 172.18.0.2 MongoDB Primarym1 172.18.0.3 MongoDB Secondary1容器名 ip 备注m2 172.18.0.4 MongoDB Secondary2tomcat001 172.18.0.5 Tomcat server相互关系如下图: 关于 Tomcat server 环境本次实战我

3、们用 Maven 创建一个 java web 工程,然后在线部署到 Docker 上去,Tomcat 的镜像请用 bolingcavalry/online_deploy_tomcat:0.0.1,关于在线部署的详情请参照文章 实战 docker,编写 Dockerfile 定制 tomcat 镜像,实现 web 应用在线部署 关于 MongoDB 集群环境搭建 MongoDB 副本集的集群环境不是本章的重点,这篇文章详细的记录了如何搭建集群环境,您可以作为实战参考: Docker 下,实战 mongodb 副本集(Replication)docker-compose.yml 配置由于要启动四个

4、容器:Mongodb 集群和 Tomcat Server,所以用 docker-compose 批量管理比较方便,docker-compose.yml 内容如下:version: 2services:m0: image: bolingcavalry/ubuntu16-mongodb349:0.0.1container_name: m0command: /bin/sh -c mongod -replSet replset0restart: alwaysm1: image: bolingcavalry/ubuntu16-mongodb349:0.0.1container_name: m1depen

5、ds_on:- m0command: /bin/sh -c mongod -replSet replset0restart: alwaysm2: image: bolingcavalry/ubuntu16-mongodb349:0.0.1container_name: m2depends_on:- m1command: /bin/sh -c mongod -replSet replset0restart: alwaystomcat001: image: bolingcavalry/online_deploy_tomcat:0.0.1container_name: tomcat001ports:

6、 - “8080:8080“ links: - m0:mongodb0- m1:mongodb1- m2:mongodb2restart: always 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31如上述 yml 脚本所示,m0、m1 、m2 这三个容器组成了副本集集群,tomcat001 容器配置的 link 属性中包含了其他三个容器,所以原本需要直接使用 IP 地址的地方都可以用 mongodb0、mongodb1、mongodb2 来代替了;启动容器,把集群环境配置好

7、在 docker-compose.yml 文件所在目录下,执行命令 docker-compose up -d 批量启动所有容器,再进入 m0 容器把集群环境配置好,配置方法非常简单,请参考 Docker 下,实战 mongodb 副本集(Replication)终于,准备工作已经完成,咱们可以开始编码了;依赖库在我们的 pom.xml 中,除了常规的 spring 依赖,还要加入本次用到的MongoDB 操作的依赖:org.springframework.dataspring-data-mongodb1.2.0.RELEASE 1 2 3 4 5另外为了更方便的查看数据,我们把 fastjso

8、n 的依赖也引进来:com.alibabafastjson1.2.39 1 2 3 4 5资源文件工程用到的资源文件一共四个,如下图:1. config.properties 放的是 MongoDB 集群的所有机器地址和端口,以及要连接的数据库:mongodb.host=mongodb0:27017,mongodb1:27017,mongodb2:27017mongodb.dataname=school 1 2如上所示,机器地址并没有用 IP,而是 link 参数中的alias:mongodb0 ,mongodb1,mongodb2; 2. logback.xml 日志配置,不细说了; 3.

9、spring-extends.xml 这里面存放的是操作 MongoDB 所需的配置信息, mongoTemplate 这个bean 负责提供操作 MongoDB 的服务,请注意更改 xmlns:mongo 和xsi:schemaLocation 的配置,负责会导致 xml 解析失败: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33在业务代码中通过 AutoWire 引入 mongoTemplate,就能操作 MongoDB了; 5. spring-mvc.xml

10、 Spring 环境的常规配置,不用多说了;此外还有 web.xml 文件也要注意,要将 spring-extends.xml 引入:contextConfigLocationclasspath:spring-extends.xml 1 2 3 4代码结构代码结构如下图所示,我们通过浏览器发起的增删改查操作都会由MongodbController 来处理,它会调用 StudentService 接口的服务,和数据库有关的实体类是 Student:Student 实体类实体类没什么好说的,主要是注意 Document 注解,说明了该类是 student集合对应的实体类:Document(coll

11、ection = “student“)public class Student /* 学号*/private String id;/* 姓名*/private String name;/* 年龄*/private int age; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18服务实现类,操作 MongoDB 的核心代码下面是通过提供的 API 对 MongoDB 进行增删改查的代码:AutowiredMongoTemplate mongoTemplate;/* 新增一个文档* param student* return*/public String

12、insert(Student student) LOGGER.info(“start insert : “, JSON.toJSONString(student);mongoTemplate.insert(student);LOGGER.info(“finish insert“);return null;/* 根据名称删除文档* param name* return*/public String deleteByName(String name) LOGGER.info(“start delete “, name);Query query = new Query();Criteria crit

13、eria = new Criteria();criteria.and(“name“).is(name);query.addCriteria(criteria);mongoTemplate.findAndRemove(query, Student.class);return null;/* 根据名称修改 student 文档的年龄字段* param student* return*/public String updateByName(Student student) LOGGER.info(“start update “, JSON.toJSONString(student);/构造查询信息Q

14、uery query = buildNameQuery(student.getName();/构造更新信息Update update = new Update();update.set(“age“, student.getAge();/执行更新mongoTemplate.updateFirst(query, update, Student.class);return null;/* 查找 student 集合的所有文档* return*/public List findAll() return mongoTemplate.findAll(Student.class);/* 创建一个根据名字查询

15、的 Query 对象* param name* return*/private Query buildNameQuery(String name)Query query = new Query();Criteria criteria = new Criteria();criteria.and(“name“).is(name);query.addCriteria(criteria);return query; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 3

16、5 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72Controller 对 Service 的调用此处 Controller 的作用是受到 web 请求后直接调用 Service 提供的 API 来完成数据库操作:AutowiredStudentService studentService;RequestMapping(“/insert“)public String insert(HttpServletRequest re

17、quest, Model model) String errorStr = studentService.insert(buildStudent(request);LOGGER.info(“student insert service response “, errorStr);return StringUtils.isEmpty(errorStr) ? “success“ : buileFilePageInfo(errorStr, model);RequestMapping(“/delete“)public String delete(HttpServletRequest request,

18、Model model) String name = get(request, “name“);String errorStr = studentService.deleteByName(name);LOGGER.info(“student deleteByName service response “, errorStr);return StringUtils.isEmpty(errorStr) ? “success“ : buileFilePageInfo(errorStr, model);RequestMapping(“/update“)public String update(Http

19、ServletRequest request, Model model) String errorStr = studentService.updateByName(buildStudent(request);LOGGER.info(“student updateByName service response “, errorStr);return StringUtils.isEmpty(errorStr) ? “success“ : buileFilePageInfo(errorStr, model);RequestMapping(“/findall“)ResponseBodypublic

20、String findAll(HttpServletRequest request, Model model) List list = studentService.findAll();return (null!=list 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39部署代码写好了,pom.xml 所在目录下执行 mvn clean package -U -Dmaven.test.skip=true tomcat7:redep

21、loy 在线部署到 Tomcat server,然后一起来验证一下吧;验证在浏览器输入 http:/localhost:8080/mongodbreplicationdemo/findall 查看所有数据,会看到以下结果,表明查处的结果为空:新增一条记录试试,输入http:/localhost:8080/mongodbreplicationdemo/insert?name=Tom&age=11,提示操作成功:再查看就有数据了:执行这个请求更新 Tom 的年龄:http:/localhost:8080/mongodbreplicationdemo/update?name=Tom&age=33再看

22、看年龄已经更新成功了:最后是删除操作:http:/localhost:8080/mongodbreplicationdemo/delete?name=Tom本次实战的 java 工程的源码我已经上传到 github 了,地址是::zq2599/blog_demos.git,里面有多个工程,本次实战的工程是 mongodbreplicationdemo,如下图红框所示: 至此,Java 操作 MongoDB 的实战就结束了,我们对 MongoTemplate 算是有了初步的认识,更多的功能应该是配合着 MongoDB 的功能以及实际场景的需求逐渐浮出水面,大家一起尝试和探索吧。更多资讯:http:/

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报