相关动态
第一个springboot项目
2024-12-29 19:54

前言

  建立一个全新的项目,或者把旧的庞大的项目,进行拆分成多个项目。在建立新的项目中,经常需要做一些重复的工作,比如说拷贝一下常用的工具类,通用代码等等。所以就可以做一个基础的项目方便使用,在经历新项目的时候,直接在基础项目上进行简单配置就可以开发业务代码了。

基础项目该包含哪些东西。

  • Swagger在线接口文档。
  • CodeGenerator 代码生成器。
  • 统一返回。
  • 通用的分页对象。
  • 常用工具类。
  • 全局异常拦截。
  • 错误枚举。
  • 自定义异常。
  • 多环境配置文件。
  • Maven多环境配置。
  • 日志配置。
  • JenkinsFile。

可以在评论区进行补充


Swagger

  写接口文档通常是一件比较头疼的事情,然而swagger就用是用来帮我们解决这个问题的。可以在线生成接口文档,并且可以在页面上进行测试。

  可以非常清楚的显示,请求数据已经响应数据。当然这一切都需要在代码中进行配置。

注意的点:接口文档只能在测试/开发环境开启,其他环境请关闭。

常用的Swagger注解
  • @Api用于Controller
  • @ApiOperation用于Controller内的方法。
  • @ApiResponses用于标识接口返回数据的类型。
  • @ApiModel用于标识类的名称
  • @ApiModelProperty用于标识属性的名称
案例

对应的swagger的配置可以查看基础项目内的SwaggerConfiguration.java.

CodeGenerator代码生成器。

   mybatis_plus代码生成器可以帮我们生成entity,service,serviceImpl,mapper,mapper.xml。省去了建立一大堆实体类的麻烦。

  由于配置太长这里就不贴出来了,对应的CodeGenerator的配置可以查看基础项目内的CodeGenerator.java.


常用的封装

统一返回 ResultVo

将所有的接口的响应数据的格式进行统一。

抽象表单 baseForm

有小伙伴可能有疑问了,这个类有啥用呢。先看一下,下面的代码。

重构一下,感觉清爽了一些。

使用baseForm进行重构 AddUserForm 继承 baseForm并重写buildEntity

   上面的代码有没有种似曾相识的感觉,很多情况都是将接受到的参数,转变成对应的实体类然后保存或者更新。所以对于这类的form可以继承baseform并实现buildEntity()这样可以更加符合面向对象,service不需要关心form如何转变成entity,只需要在使用的时候调用buildEntity()即可,尤其是在form -> entity相对复杂的时候,这样做可以减少service内的代码。让代码逻辑看起来更加清晰。


通用的分页对象

  涉及到查询的时候,绝大多数都需要用到分页,所以说封装分页对象就很有必要。可以注意下 PageForm.calcCurrent()、PageVo.setCurrentAndSize()、PageVo.setTotal()这个几个方法。

PageForm
PageVo
案例
ListUserForm
UserServiceImpl
UserController
注意的点
  • PageVo在实例化的时候需要设置当前页和每页显示的数量 可以调用setCurrentAndSize()完成。
  • 进行分页查询的时候,需要计算偏移量。listUserForm.calcCurrent()

为什么要计算偏移量呢?

  • 假如查询第1页每页显示10条记录,前端传递过来的参数是current=1&&size=10,这个时候limit 1,10没有问题。
  • 假如查询第2页每页显示10条记录,前端传递过来的参数是current=2&&size=10,这个时候limit 2,10就有问题,实际应该是limit 10,10。calcCurrent()的作用就是如此。

为什么不用MybatisPlus自带的分页插件呢?

自带的分页查询在大量数据下,会出现性能问题。

常用工具类

常用工具类可以根据自己的开发习惯引入。


异常处理

异常处理的大致流程主要如下。

  • 异常信息抛出 -> ControllerAdvice 进行捕获格式化输出内容
  • 手动抛出CustomException并传入ReulstEnum ——> 进行捕获错误信息输出错误信息。
自定义异常
错误信息枚举

根据业务进行添加。

第一个springboot项目

全局异常拦截

全局异常拦截是使用@ControllerAdvice进行实现,常用的异常拦截配置可以查看 GlobalExceptionHandling。

案例
Controller
Service
结果

将报错代码所在的文件第多少行都打印出来。方便排查。

注意的点

  所有手动抛出的错误信息,都应在错误信息枚举ResultEnum进行统一维护。不同的业务使用不同的错误码。方便在报错时进行分辨。快速定位问题。


多环境配置

SpringBoot多环境配置

  对于一个项目来讲基本都4有个环境dev,test,pre,prod,对于SpringBoot项目多建立几个配置文件就可以了。然后启动的时候可以通过配置spring.profiles.active 来选择启动的环境。

Maven多环境配置

  假如想在打包的时候动态指定环境,这个时候就需要借助Maven的xml来实现。

配置XML
更改application.yml
使用案例

  打包完可以解压开查看application.yml 会发现spring.profiles.active=@activatedProperties@ 发生了改变。


日志配置

采用logback日志配置

JenkinsFile

  JenkinsFile肯定顾名思义是给jenkins用的。主要是配置项目根据如何进行构建并发布到不同的环境。需要去了解pipeline语法,以及如何配置jenkins。JenkinsFileDemo


代码地址

https://gitee.com/huangxunhui/basic_project.git

    以上就是本篇文章【第一个springboot项目】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/news/14896.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多   
最新文章
以“心”聚力,共铸电影辉煌
1905电影网专稿 4月10日至13日,电影频道节目中心在全国宣传干部学院(八大处校区)成功主办全国电影宣传骨干人才培训班(第一期
人人都需要一场1v4的恋爱
作者|谢明宏编辑|李春晖让人看得津津有味又醒世育人的爱情剧以几个“对手”为宜?这大概也和现实生活差不多,一个人千挑万选,两
一辆自动驾驶车需要几根天线?手机供应商「一辆自动驾驶车需要几根天线?」
未来,一辆车子究竟需要使用多少天线,才能具备自动驾驶的能力? 这可不是在开玩笑的!根据爱尔兰天线技术供应商——锐锋(Taogla
Use of Cookies and Other Tracking Technologies黑莓手机官网「Use of Cookies and Other Tracking Technologies」
Last Updated: January 1, 2023This notice describes the types of Cookies and Other Tracking Technologies (“Cookies”) th
nfc安卓手机怎么设置手机nfc功能在哪里「nfc安卓手机怎么设置」
NFC在安卓手机上的设置指南随着科技的不断进步,NFC(近场通讯)技术已经越来越普及。许多安卓手机都配备了NFC功能,它不仅能够
关税加码,普通投资者如何应对?
4月7日,股市经历剧烈波动,上证指数单日下跌7.34%,交易资金触及止损后恐慌性出逃,但更值得关注的是股指期货端出现历史极端行
2025年北京市全民健身“社区杯”骑行系列活动第四站举办
4月15日,2025年北京市全民健身社区杯骑行系列活动暨京彩骑行第四站在北京经济技术开发区亦庄新城滨河森林公园举行。本次活动以
小米一键上锁神器轻松加密,安全守护您的隐私加密手机「小米一键上锁神器轻松加密,安全守护您的隐私」
在互联网时代,信息安全已经成为每个人都需要关注的问题。尤其是在智能手机普及的今天,我们的个人信息、聊天记录、支付密码等隐
午盘:美股涨幅扩大 道指涨逾300点美股手机新浪网「午盘:美股涨幅扩大 道指涨逾300点」
  北京时间6日凌晨,美股周二午盘涨幅扩大,道指上涨逾300点,纳指上涨1.3%。市场密切关注美国总统大选选情,以及本周的财报与
Isomorphic Labs获6亿美元,加速 AI 药物研发
金融时报消息,总部位于英国伦敦的 Isomorphic Labs 宣布完成6 亿美元融资。本次由 Thrive Capital 领投,现有投资者谷歌的