从零开始搭建仿抖音短视频APP-构建后端项目
项目持续创作中...
仿抖音短视频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-构建后端项目相关推荐
- 从零开始搭建仿抖音短视频APP-后端消息业务模块开发(2)-基础版完结篇
项目持续更新中: 仿抖音短视频APP专栏 目录 系统消息入库保存 MongoDB分页查询系统消息列表 删除系统消息 系统消息入库保存 这里还剩下最后一个点赞评论没有完成 这里如果点赞了你的评论,你们视 ...
- 从零开始搭建仿抖音短视频APP-开发用户业务模块(3)
项目持续更新中: 仿抖音短视频APP专栏 目录 注册登录-BO接受前端参数验证 对BO校验进行统一封装 开发用户是否存在 开发创建用户Service 实现短信注册登录与分布式会话 注册登录-BO接受前 ...
- 从零开始搭建仿抖音短视频APP-后端开发消息业务模块(1)
项目持续更新中: 仿抖音短视频APP专栏 目录 保存系统消息到MongoDB 系统消息入库保存-关注 系统消息入库保存-点赞短视频 系统消息入库保存-评论与回复 保存系统消息到MongoDB 我们把m ...
- 从零开始搭建仿抖音短视频APP-后端开发短视频业务模块(2)
项目持续更新中: 仿抖音短视频APP 目录 实现数据层mybatis自定义mapper与sql 查询短视频列表api 实现下拉刷新和分页功能 实现数据层mybatis自定义mapper与sql 在数据 ...
- 从零开始搭建仿抖音短视频APP-后端开发短视频业务模块(3)
项目持续更新中: 仿抖音短视频APP专栏 目录 视频详情页展示的数据层实现 视频详情页展示的api实现 短视频下载.复制连接.二维码展示 视频保存到相册 复制链接 二维码展示 实现转为私密或公开视频 ...
- 从零开始搭建仿抖音短视频APP-开发用户业务模块(2)
项目持续创作中: 仿抖音短视频APP项目专栏 目录 安装redis6.0缓存中间件 整合Redis并存储验证码 拦截器限制60s短信发送 优雅异常封装返回拦截器异常 安装redis6.0缓存中间件 需 ...
- 从零开始搭建仿抖音短视频APP--后端开发粉丝业务模块(3)
项目持续创作中: 仿抖音短视频APP专栏 目录 实现用户点赞视频 用户取消点赞 用户是否点赞视频的判断 实现用户点赞视频 用户在点赞我们的视频后,我们需要去实现一些相关的业务, 这里需要对应到数据库的 ...
- 从零开始搭建仿抖音短视频APP--后端开发粉丝业务模块(1)
项目持续更新中: 仿抖音短视频APP专栏 目录 关注短视频博主 Redis技术妙用 取消关注博主 关注短视频博主 在我们的主页中,刷视频时是可以在头像下方进行一个关注 点击头像,进入对方的主页也是可以 ...
- 从零开始搭建仿抖音短视频APP--开发用户业务模块(4)
项目持续更新中: 仿抖音短视频APP专栏 目录 用户退出登录 开发查询用户信息接口 统一封装修改用户信息(一) 统一封装修改用户信息(二) 用户退出登录 此时还没有实现退出登录. 在前端中,我们找到l ...
最新文章
- 最优化:拉格朗日乘子法
- Why Did the Cow Cross the Road III(树状数组)
- t1plus 用什么服务器系统,T1 Plus商贸宝普及版与用友T1系统哪个更好呢?
- 当前最主流的商业模式,普通老板如何打造强大后端实现躺赚的秘诀!
- 数据结构与算法 / 排序算法(1)
- centos编译安装php7_centos7源码安装php7.2
- python读取数据文件、并把里面的数据变成x的二维坐标_(数据科学学习手札60)用Python实现WGS84、火星坐标系、百度坐标系、web墨卡托四种坐标相互转换...
- 尴尬的风险管理如何深入下去-某公司为例
- response.sendRedirect(url)与request.getRequestDispatcher(url).forward(request,response)的区别
- 二叉树的非递归遍历(转载)
- PHP合并在线电影ts格式视频文件
- 微信公众号之订阅号(已认证)实现oauth2授权登录详细步骤介绍
- u盘损坏怎么恢复原来数据,u盘损坏数据如何恢复
- 霍夫曼树和霍夫曼编码原理
- Jenkins linux 操作系统一键部署多节点
- python对接蚂蚁验证码平台
- 【AI视野·今日CV 计算机视觉论文速览 第169期】Fri, 22 Nov 2019
- 滴滴裁员赔偿方案,这才是好聚好散!
- 计算机里面的固态硬盘,怎么判断电脑里面的是不是固态硬盘?
- fabric 环境 搭建与安装
热门文章
- LoadRunner之Controller的Scenario-(Manual Scenario)手工场景
- python相对路径找不到文件_Python 解决相对路径问题:No such file or directory
- mysql 单表关联_MySQL 基础之 单表、多表联查
- 【翻译】第四章 MMS-EASE Lite底层
- 多标签分类算法的研究进展
- PC电脑端常见蓝屏代码自检测与解决方案
- PATA1138_偷鸡大法
- PATA 1093 有几个PAT
- 国内下载vscode速度慢问题解决
- 高等学校等级计算机考试,(全国高等学校计算机等级考试一级理论汇总_答案.doc...