项目持续创作中...

​​​​​​仿抖音短视频APP项目专栏

目录

聚合工程

构建父工程

构建子工程

构建接口工程并且暴露api接口

优雅Restful相应封装

Lombok与多环境profile

数据层

配置数据库逆向生成工具

配置mybatis整合SpingBoot

使用Knife4j实现接口文档


聚合工程

构建父工程

项目采用meavn创建一个聚合工程,采用meavn的分层结构。构建一个父工程,

pom:代表总工程,用于管理的

配置完按常理,在Meavn中应该会有坐标,但这里没有。

我们这里用的dependencyManagement,是一种父子的关系,面向对象的一种思想。

使用dependencyManagement的目的是为了保证父工程的干净, 也就是说父工程他只负责管理依赖,以及依赖的版本,而不会导入额外的jar依赖。 如此一来父工程的职责就很单一了,而且也符合了面向对象开发的父子继承关系, 依赖的导入只有在各自的子工程中才会进行导入。

如果不想加,可以把所有的坐标,在我们的(顶级工程)父工程导入,也没有问题。

meavn的编译工具所采用的版本是jdk的1.8,作为一个插件使用。

构建子工程

创建子模块,

创建完成之后在父工程里会出现:

book-common 通用工程,包含一些工具类,枚举类,自定义异常,封装的公共方法。

book-model 模型工程,所有的子工程以及所有(微)服务工程所涉及到的实体类都可以再此处管理 比如:POJO, Bean, Entity, BO, VO, DTO, MO, EO...

book-mapper 数据层,操作数据库(DAO)

book-service 业务层

book-api 接口层,暴露接口,提供给前端调用

在父工程中检查:

在common中引入依赖:

注:这不能version,因为会覆盖父工程的版本。

依赖来源于Springboot中,它管理了很多的依赖:

最后建议在父工程中,install,它会把我们所有的jar包进行安装和校验。

构建接口工程并且暴露api接口

在我们构建好web工程后,要创建一个启动类来启动我们的工程:

此时,它会报错,因为之前在common中添加了依赖,而我们的项目是一层一层调用的。api依赖于service,service依赖于mapper,mapper依赖于model,model依赖于common,这样才会使得我们api里会有相应的依赖。

在model中:

在mapper中:

在service中:

在父工程进行一个install。

在启动类中:

接着要构建一个controll的包,再创建一个类,在里面写我们最简单的一个接口方法:

随后要创建一个配置文件,首先我们的服务端口号,要和我们之前的项目保持一致。

在里面进行一些配置:

启动项目:

访问hello:

我们配置的一个banner,可以是图片等...控制台的一个效果,可以在云服务台和日志里面看见。

现在表示已经可以对外体现我们的web能力了。

优雅Restful相应封装

我们和前端做对接时,会有一个统一的封装,也就是我们的接口请求的是什么样的状态,是否成功,有没有异常。

在common中:

现在使用gracejsonresult,即优雅的封装,不包含枚举。我们通过优雅的封装可以在

responsestatusEnum中做一个定义。

由于枚举在前端后端都是统一的,前端在捕获status时,会根据状态,把对应的内容展示出来,

或者前端可以不根据状态码直接获取。

如何去使用? 这里我们是请求成功的:

接着重启:

现在我们获得的是json的一个字符串,前端根据状态码进行判断。

如果这里设计请求失败,在这里传入一个枚举:

这就是我们优雅的一个封装。

Lombok与多环境profile

在common中引入一个依赖:

早期它是作为一个插件,需要独立安装。现在被springboot集成了。现在的开发根据能够自动集成。

如何使用呢?创建一个类,

按照以往需要创建很多get,set函数。

生成的太多没有必要,我们把方法去掉,只保留属性,

@data帮我们生成了方法,就可以调用了,

我们可以使用日志进行打印,只需要正当前的类里加一个注释:

重启,做个测试:

回到控制台:

三个级别的日志级别,可以在配置文件中设置:

我们有开发环境,生成环境,测试环境等,不同环境对于我们的代码是不同的,配置需要改变:

从配置来讲,只是端口号不同,在我们本身的配置里,注释端口号

在我们的dev配置文件中,删去相同的。

数据层

配置数据库逆向生成工具

接着要数据库逆向生成:
在navaciat中导入:

并且在父过程中添加模块:

MyMapper是一个工具,增对单表的增删改查,已经帮我们封装好了

配置文件我们将它当作工具使用 ,

这里要修改我们地方数据源,用户,密码等...

生成我们对应的文件:

将文件拷贝到mapper中

这里继承我们的MyMapper

接着把pojo复制到mapper中

配置mybatis整合SpingBoot

此时mybatis的依赖坐标还没有加入

发现还是会报错,因为我们复制时没有加入jar包的依赖 ,这时候展开我们的逆向工具,重新拷贝一份。

这里接口就能对标找到我们的Mapper:

我们还需要在配置文件中加入数据源:

开发环境:

加入通用mybatis的配置:

注:my.mapper一定要和本地做好匹配

最后在要添加我们的扫描器:

最后做一个全局的install,重新启动Application

这里完成了我们数据层的一个配置,但没有实质性的交互。

使用Knife4j实现接口文档

我们在真正开发的时候会有很多不同的请求方法,有些是不能通过浏览器请求的:

这里用到了一个软件postman:

我们在这里主要要讲的是一个文档工具:

通过这个工具结合springboot,增强我们的api文档。

项目介绍:

能够反映需要传入的参数,能够得到什么等...免去我们后端开发写文档,维护文档的尴尬局面。

在api的pom文件中加入依赖:

接着创建一个配置类:

通过注解扫描到容器中

我们现在要扫描的路径就是.contoller:

接着我们就能访问:

在主页中都会显示

与前端人员对接主要看的就是文档:

在调试中我们可以传入参数:

在后期开发也是可以通过这个来做测试的。

我们现在看到的是没有中文释义的,在controller可以注释:

请求就是我们的hello

从零开始搭建仿抖音短视频APP-构建后端项目相关推荐

  1. 从零开始搭建仿抖音短视频APP-后端消息业务模块开发(2)-基础版完结篇

    项目持续更新中: 仿抖音短视频APP专栏 目录 系统消息入库保存 MongoDB分页查询系统消息列表 删除系统消息 系统消息入库保存 这里还剩下最后一个点赞评论没有完成 这里如果点赞了你的评论,你们视 ...

  2. 从零开始搭建仿抖音短视频APP-开发用户业务模块(3)

    项目持续更新中: 仿抖音短视频APP专栏 目录 注册登录-BO接受前端参数验证 对BO校验进行统一封装 开发用户是否存在 开发创建用户Service 实现短信注册登录与分布式会话 注册登录-BO接受前 ...

  3. 从零开始搭建仿抖音短视频APP-后端开发消息业务模块(1)

    项目持续更新中: 仿抖音短视频APP专栏 目录 保存系统消息到MongoDB 系统消息入库保存-关注 系统消息入库保存-点赞短视频 系统消息入库保存-评论与回复 保存系统消息到MongoDB 我们把m ...

  4. 从零开始搭建仿抖音短视频APP-后端开发短视频业务模块(2)

    项目持续更新中: 仿抖音短视频APP 目录 实现数据层mybatis自定义mapper与sql 查询短视频列表api 实现下拉刷新和分页功能 实现数据层mybatis自定义mapper与sql 在数据 ...

  5. 从零开始搭建仿抖音短视频APP-后端开发短视频业务模块(3)

    项目持续更新中: 仿抖音短视频APP专栏 目录 视频详情页展示的数据层实现 视频详情页展示的api实现 短视频下载.复制连接.二维码展示 视频保存到相册 复制链接 二维码展示 实现转为私密或公开视频 ...

  6. 从零开始搭建仿抖音短视频APP-开发用户业务模块(2)

    项目持续创作中: 仿抖音短视频APP项目专栏 目录 安装redis6.0缓存中间件 整合Redis并存储验证码 拦截器限制60s短信发送 优雅异常封装返回拦截器异常 安装redis6.0缓存中间件 需 ...

  7. 从零开始搭建仿抖音短视频APP--后端开发粉丝业务模块(3)

    项目持续创作中: 仿抖音短视频APP专栏 目录 实现用户点赞视频 用户取消点赞 用户是否点赞视频的判断 实现用户点赞视频 用户在点赞我们的视频后,我们需要去实现一些相关的业务, 这里需要对应到数据库的 ...

  8. 从零开始搭建仿抖音短视频APP--后端开发粉丝业务模块(1)

    项目持续更新中: 仿抖音短视频APP专栏 目录 关注短视频博主 Redis技术妙用 取消关注博主 关注短视频博主 在我们的主页中,刷视频时是可以在头像下方进行一个关注 点击头像,进入对方的主页也是可以 ...

  9. 从零开始搭建仿抖音短视频APP--开发用户业务模块(4)

    项目持续更新中: 仿抖音短视频APP专栏 目录 用户退出登录 开发查询用户信息接口 统一封装修改用户信息(一) 统一封装修改用户信息(二) 用户退出登录 此时还没有实现退出登录. 在前端中,我们找到l ...

最新文章

  1. 最优化:拉格朗日乘子法
  2. Why Did the Cow Cross the Road III(树状数组)
  3. t1plus 用什么服务器系统,T1 Plus商贸宝普及版与用友T1系统哪个更好呢?
  4. 当前最主流的商业模式,普通老板如何打造强大后端实现躺赚的秘诀!
  5. 数据结构与算法 / 排序算法(1)
  6. centos编译安装php7_centos7源码安装php7.2
  7. python读取数据文件、并把里面的数据变成x的二维坐标_(数据科学学习手札60)用Python实现WGS84、火星坐标系、百度坐标系、web墨卡托四种坐标相互转换...
  8. 尴尬的风险管理如何深入下去-某公司为例
  9. response.sendRedirect(url)与request.getRequestDispatcher(url).forward(request,response)的区别
  10. 二叉树的非递归遍历(转载)
  11. PHP合并在线电影ts格式视频文件
  12. 微信公众号之订阅号(已认证)实现oauth2授权登录详细步骤介绍
  13. u盘损坏怎么恢复原来数据,u盘损坏数据如何恢复
  14. 霍夫曼树和霍夫曼编码原理
  15. Jenkins linux 操作系统一键部署多节点
  16. python对接蚂蚁验证码平台
  17. 【AI视野·今日CV 计算机视觉论文速览 第169期】Fri, 22 Nov 2019
  18. 滴滴裁员赔偿方案,这才是好聚好散!
  19. 计算机里面的固态硬盘,怎么判断电脑里面的是不是固态硬盘?
  20. fabric 环境 搭建与安装

热门文章

  1. LoadRunner之Controller的Scenario-(Manual Scenario)手工场景
  2. python相对路径找不到文件_Python 解决相对路径问题:No such file or directory
  3. mysql 单表关联_MySQL 基础之 单表、多表联查
  4. 【翻译】第四章 MMS-EASE Lite底层
  5. 多标签分类算法的研究进展
  6. PC电脑端常见蓝屏代码自检测与解决方案
  7. PATA1138_偷鸡大法
  8. PATA 1093 有几个PAT
  9. 国内下载vscode速度慢问题解决
  10. 高等学校等级计算机考试,(全国高等学校计算机等级考试一级理论汇总_答案.doc...