spring Cloud微服务架构实战项目系列之吐槽微服务开发(六)

        本次课程主要讲解微服务架构项目中的吐槽微服务功能,本次功能主要涉及到如何开发微服务,以及文档型数据库mongodb的应用,如何使用mongodb来实现吐槽数据的存储。

1吐槽微服务架构搭建

        吐槽微服务主要是为了方便用户尽情的发布心情以及想说的话,与其他用户的一个互动功能,搭建吐槽微服务还是依赖于之前文章讲到的基础微服务、公共微服务2大模块。

2前端界面演示

在这里插入图片描述

         界面头部依然是我们的操作功能区,左边是所有用户发布的一个吐槽列表,右边是我们发布吐槽的功能区,底部依然是我们的网站基本信息。

3项目目录

        项目采用spring boot多模块构建,后期会加入spring cloud构建工程,目前已经拆分为微服务。

         项目依赖于tensquare_base、tensquare_common2个微服务模块。

         微服务模块为tensquare_spit

4搭建项目前期准备

4.1mongodb介绍

mongodb也是一种数据的存储方式,由于吐槽数据量大,所以我们优先选择mongodb数据库去存储数据。

4.2下载安装mongodb

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学习收获

  1. 掌握微服务架构程序开发流程,单应用单模块单数据库开发
  2. 学习mongodb特点和体系架构以及mogodb的应用场景
  3. mongdb如何与java程序交互
  4. spring boot如何继承spring-data-mongodb
  5. 吐槽微服务项目后台开发流程
  6. 吐槽微服务前台数据格式解析以及渲染

8下节课程内容

消息中间件rabbitmq的学习

ELK搜索服务学习

rabbitmq的应用场景、ELK技术的应用场景

9个人说明

经验是由一点一点积累的,思维也是由一天一天训练出来的。

10我的个人网站

如果你急需一个单体结构项目练手下面的项目可能适合你,可以学习一个完整的项目流程,项目业务以及前后端项目的常用技术:电商在线演示地址为:演示地址

持续更新分享此项目微服务架构项目实战(开发中…)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值