文章目录
本次课程主要讲解微服务架构项目中的吐槽微服务功能,本次功能主要涉及到如何开发微服务,以及文档型数据库mongodb的应用,如何使用mongodb来实现吐槽数据的存储。
1吐槽微服务架构搭建
吐槽微服务主要是为了方便用户尽情的发布心情以及想说的话,与其他用户的一个互动功能,搭建吐槽微服务还是依赖于之前文章讲到的基础微服务、公共微服务2大模块。
2前端界面演示
界面头部依然是我们的操作功能区,左边是所有用户发布的一个吐槽列表,右边是我们发布吐槽的功能区,底部依然是我们的网站基本信息。
3项目目录
项目采用spring boot多模块构建,后期会加入spring cloud构建工程,目前已经拆分为微服务。
项目依赖于tensquare_base、tensquare_common2个微服务模块。
微服务模块为tensquare_spit
4搭建项目前期准备
4.1mongodb介绍
mongodb也是一种数据的存储方式,由于吐槽数据量大,所以我们优先选择mongodb数据库去存储数据。
4.2下载安装mongodb
- 下载地址 :https://www.mongodb.com/download-center#community
- 下载完成安装包
- 傻瓜式安装一直下一步,就完成了安装
4.3mongodb启动
服务启动命令:
mongod --dbpath=d:\mongodbdata
dbpath参数指定数据库文件的位置,自己先指定一下。
4.4启动完成
默认端口:27017
5搭建吐槽微服务项目目录
不会搭建的可以看我之前的微服务架构搭建的。
5.1编写application.yml
server:
port: 9007
spring:
application:
name: tensquare‐spit #指定服务名
data:
mongodb:
host: 127.0.0.1
database: spitdb
最关键是配置mongodb的地址和指定的数据库名字
5.2pom.xml依赖
<!--引入spring data mongodb-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>com.tensquare</groupId>
<artifactId>tensquare_common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
最关键是引入spring-data-mongodb jar包用于操作mongodb
5.3构建mongodb映射的实体类吐槽实体类
public class Spit implements Serializable {
@Id
private String _id;
private String content;
@JsonFormat(shape=JsonFormat.Shape.STRING,pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date publishtime;
private String userid;
private String nickname;
private Integer visits;
private Integer thumbup;
private Integer share;
private Integer comment;
private String state;
private String parentid;
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getPublishtime() {
return publishtime;
}
public void setPublishtime(Date publishtime) {
this.publishtime = publishtime;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public Integer getVisits() {
return visits;
}
public void setVisits(Integer visits) {
this.visits = visits;
}
public Integer getThumbup() {
return thumbup;
}
public void setThumbup(Integer thumbup) {
this.thumbup = thumbup;
}
public Integer getShare() {
return share;
}
public void setShare(Integer share) {
this.share = share;
}
public Integer getComment() {
return comment;
}
public void setComment(Integer comment) {
this.comment = comment;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getParentid() {
return parentid;
}
public void setParentid(String parentid) {
this.parentid = parentid;
}
}
5.4编写对mongodb数据库的增删改查
关键代码controller层
@RestController
@CrossOrigin
@RequestMapping("/spit")
public class SpitController {
@Autowired
private SpitService spitService;
/**
* 查询全部数据
* @return
*/
@RequestMapping(method= RequestMethod.GET)
public Result findAll(){
return new Result(true, StatusCode.OK,"查询成 功",spitService.findAll());
}
/**
* 根据ID查询
* @param id ID
* @return
*/
@RequestMapping(value="/{id}",method=RequestMethod.GET)
public Result findOne(@PathVariable String id){
return new Result(true,StatusCode.OK,"查询成 功",spitService.findById(id));
}
/**
* 增加
* @param spit
*/
@RequestMapping(method=RequestMethod.POST)
public Result add(@RequestBody Spit spit ){
spitService.add(spit);
return new Result(true,StatusCode.OK,"增加成功");
}
/*
(1)SpitDao新增方法定义
(2)SpitService新增方法
* 修改
* @param spit
*/
@RequestMapping(value="/{id}",method=RequestMethod.PUT)
public Result update(@RequestBody Spit spit,@PathVariable String id )
{
spit.set_id(id);
spitService.update(spit);
return new Result(true,StatusCode.OK,"修改成功");
}
/**
* 删除
* @param id
*/
@RequestMapping(value="/{id}",method=RequestMethod.DELETE)
public Result deleteById(@PathVariable String id ){
spitService.deleteById(id);
return new Result(true,StatusCode.OK,"删除成功");
}
/***
* 根据上级ID查询吐槽列表
*/
@RequestMapping(value="/comment/{parentId}/{page}/{size}",method=RequestMethod.GET)
public Result findByparentId(@PathVariable String parentId,
@PathVariable int page,@PathVariable int size){
/**
* 类似spring jpa查询
*/
Page<Spit> pageList = spitService.findByParentid(parentId,page,
size);
return new Result(true,StatusCode.OK,"查询成功",new
PageResult<Spit>(pageList.getTotalElements(), pageList.getContent() ) );
}
}
6项目中所需接口
前端界面需要一个从mongodb中查询一个吐槽列表,网页测试渲染结果如下
前端需要一个发布吐槽接口:
summernote 吐槽编辑器:
以及后台吐槽实体mongodb数据
最终保存到mongodb数据库中
7学习收获
- 掌握微服务架构程序开发流程,单应用单模块单数据库开发
- 学习mongodb特点和体系架构以及mogodb的应用场景
- mongdb如何与java程序交互
- spring boot如何继承spring-data-mongodb
- 吐槽微服务项目后台开发流程
- 吐槽微服务前台数据格式解析以及渲染
8下节课程内容
消息中间件rabbitmq的学习
ELK搜索服务学习
rabbitmq的应用场景、ELK技术的应用场景
9个人说明
经验是由一点一点积累的,思维也是由一天一天训练出来的。
10我的个人网站
如果你急需一个单体结构项目练手下面的项目可能适合你,可以学习一个完整的项目流程,项目业务以及前后端项目的常用技术:电商在线演示地址为:演示地址
持续更新分享此项目微服务架构项目实战(开发中…)