项目规范 编写规范(范例)

项目目录

目录接口参考 项目目录结构设计,增加部分领域模型后缀强制定义,方便统一编码风格。

controller:请求处理 @RestController
module:按大业务区分,对多个业务对象数据聚合处理  @Component
manager:按业务对象区分,对同一业务对象的数据聚合处理 @Component
service:按业务对象区分,主要负责数据获取
 impl:主要负责数据获取的接口的具体实现 @Service
dao:主要负责数据访问层
xxxDao:固定后缀 Dao @Repository
config:配置类集合目录

dto:数据传输协议,用于 module、manager、service之间的数据传输

xxxDTO:固定后缀 DTO

model:持久层数据协议映射

xxxBean:固定后缀 Bean

query:前端请求接收DTO,用于接收及校验参数

xxxQuery:固定后缀 Query
vo:返回前端数据封装视图DTO

xxxVO:固定后缀 VO
component:流程扩展处理模块,如redis操作,aop,过滤器等
utils: 主要负责一些通用工具类的集合目录

resources
mapper
xxxMapper.xml  Mybatis 复杂sql实现,简单sql可用mybatis plus 接口实现

TODO: 项目脚手架

response-starter

1、统一返回封装

{
“statusCode”: 0,
“statusMsg”: “success”,
“data” : null
}
2、自定义异常  BaseException

3、自定义响应码枚举及接口   ResponseEnum DefaultResponseEnum

3、ControllerAdvice 全局异常 处理

/**

  • 自定义异常
  • @param ex 自定义异常 {@link BaseException}
  • @return 返回 200
    */
    @ResponseStatus(HttpStatus.OK)
    @ExceptionHandler(BaseException.class)
    public BaseResponseVO handleBusException(BaseException ex) {
    return new BaseResponseVO<>(ex.getCode(), ex.getMsg(), ex.getData());
    }

/**

  • 参数校验失败
  • @param e {@link MethodArgumentNotValidException}
  • @return 返回 400
    */
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public BaseResponseVO methodArgumentNotValidException(MethodArgumentNotValidException e) {
    ObjectError objectError = e.getBindingResult().getAllErrors().get(0);
    return new BaseResponseVO<>(DefaultResponseEnum.VALIDATE_FAILED, objectError.getDefaultMessage());
    }

/**

  • 未定义异常
  • @param e 异常
  • @return 返回 500
    */
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    @ExceptionHandler(Exception.class)
    public BaseResponseVO handleException(Exception e) {
    return new BaseResponseVO<>(DefaultResponseEnum.FAIL, e.getMessage());
    }

4、ExceptionControllerAdvice 和 ResponseControllerAdvice 默认关闭,开启方式 application.yml 配置

zixun:
response:
advice-exception-enabled: true
advice-response-body-enabled: true

5、返回对象属性默认为 statusCode 和 statusMsg, 修改方式 application.yml 配置

zixun:
response:
status-code: status_code
status-msg: status_msg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/28872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web-xss

一、简介 XSS 又称CSS(Cross Site Scripting)或跨站脚本攻击&#xff0c;攻击者在网页中插入由JavaScript编写的恶意代码&#xff0c;当用户浏览被嵌入恶意代码的网页时&#xff0c;恶意代码将会在用户的浏览器上执行。 二、xss的攻击方式 Dom&#xff1a;这是一种将任意 Jav…

zookeeper入门学习

zookeeper入门学习 zookeeper应用场景 分布式协调组件 客户端第一次请求发给服务器2&#xff0c;将flag值修改为false&#xff0c;第二次请求被负载均衡到服务器1&#xff0c;访问到的flag也会是false 一旦有节点发生改变&#xff0c;就会通知所有监听方改变自己的值&#…

一键开启ChatGPT“危险发言”

‍ ‍ 大数据文摘授权转载自学术头条 作者&#xff1a;Hazel Yan 编辑&#xff1a;佩奇 随着大模型技术的普及&#xff0c;AI 聊天机器人已成为社交娱乐、客户服务和教育辅助的常见工具之一。 然而&#xff0c;不安全的 AI 聊天机器人可能会被部分人用于传播虚假信息、操纵舆…

“深入探索JVM:Java虚拟机的工作原理解析“

标题&#xff1a;深入探索JVM&#xff1a;Java虚拟机的工作原理解析 摘要&#xff1a;本文将深入探索Java虚拟机&#xff08;JVM&#xff09;的工作原理&#xff0c;从类加载、内存管理、垃圾回收、即时编译器等方面进行详细解析&#xff0c;帮助读者更好地理解JVM的内部机制。…

SSH 免密登录

SSH SSH&#xff08;Secure Shell&#xff09;是一种安全通道协议&#xff0c;主要用来实现字符界面的远程登录、远程复制等功能 SSH 协议对通信双方的数据传输进行了加密处理&#xff0c;其中包括用户登录时输入的用户口令 SSH 为建立在应用层和传输层基础上的安全协议。对数…

命令行非明文密码连接 TiDB

作者&#xff1a; GangShen 原文来源&#xff1a; https://tidb.net/blog/6794a34b 在命令行中连接TiDB的过程中&#xff0c;为了保护密码不被明文获取&#xff0c;可以使用非明文密码连接。本文记录了几种非明文连接 TiDB 的方式。 方式一&#xff1a;命令行输入方式 [ro…

使用go获取链上数据之主动拉取-搭建环境(一)

使用go获取链上数据之主动拉取-搭建环境&#xff08;一&#xff09; 1、配置文件1.1、新建配置文件1.2、新建setting.go文件1.3、新建config.go文件 2、全局变量配置2.1、新建global.go2.2、初始化配置2.3、验证配置 在我们实际开发项目中&#xff0c;很多时候都需要从链上获取…

PyTorch 微调终极指南:第 1 部分 — 预训练模型及其配置

一、说明 如今&#xff0c;在训练深度学习模型时&#xff0c;通过在自己的数据上微调预训练模型来迁移学习已成为首选方法。通过微调这些模型&#xff0c;我们可以利用他们的专业知识并使其适应我们的特定任务&#xff0c;从而节省宝贵的时间和计算资源。本文分为四个部分&…

数据结构:插入排序

直接插入排序 插入排序算法是所有排序方法中最简单的一种算法&#xff0c;其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中&#xff0c;最终得到的序列就是已经排序好的数据。 直接插入排序是插入排序算法中的一种&#xff0c;采用的方法是&#xff1a;在…

解析隧道代理被封的几个主要原因

Hey&#xff0c;各位爬虫高手&#xff0c;你是不是经常遇到爬虫代理HTTP被封的问题&#xff1f;不要慌&#xff0c;今天我来分享一些信息&#xff0c;帮你解析这个问题&#xff01;告别封禁&#xff0c;让你的爬虫工作更顺利&#xff0c;赶快跟随我一起了解吧&#xff01; 在爬…

opencv基础45-图像金字塔01-高斯金字塔cv2.pyrDown()

什么是图像金字塔&#xff1f; 图像金字塔&#xff08;Image> Pyramid&#xff09;是一种用于多尺度图像处理和分析的技术&#xff0c;它通过构建一系列不同分辨率的图像&#xff0c;从而使得图像可以在不同尺度下进行处理和分析。图像金字塔在计算机视觉、图像处理和计算机…

APT80DQ60BG-ASEMI快恢复二极管APT80DQ60BG

编辑&#xff1a;ll APT80DQ60BG-ASEMI快恢复二极管APT80DQ60BG 型号&#xff1a;APT80DQ60BG 品牌&#xff1a;ASEMI 芯片个数&#xff1a;双芯片 封装&#xff1a;TO-3P 恢复时间&#xff1a;≤80ns 工作温度&#xff1a;-55C~150C 浪涌电流&#xff1a;600A 正向电…

UEFI build报错:‘build‘ is not recognized as an internal or external command

UEFI学习&#xff0c;某一次进行build时&#xff0c;提示&#xff1a; build is not recognized as an internal or external command,operable program or batch file. 用的命令是&#xff1a; C:\UEFIWorkspace>build -a X64 -p edk2\OvmfPkg\OvmfPkgX64.dsc -b NOOPT -…

【性能类】—页面性能类

一、提升页面性能的方法有哪些&#xff1f; 1. 资源压缩合并&#xff0c;减少HTTP请求 图片、视频、js、css等资源压缩合并&#xff0c;开启HTTP压缩&#xff0c;把资源文件变小 2. 非核心代码异步加载 →异步加载的方式 → 异步加载的区别 异步加载的方式 ① 动态脚本加载…

【OpenCV常用函数:视频捕获函数】cv2.VideoCapture

文章目录 1、cv2.VideoCapture() 1、cv2.VideoCapture() 输入视频路径&#xff0c;创建VideoCapture的对象 cv2.VideoCapture(filename) filename: 视频文件的路径视频名扩展名该类的函数有&#xff1a; 1&#xff09;video.isOpened: 检查视频捕获是否成功 2&#xff09;vid…

重试框架入门:Spring-RetryGuava-Retry

前言 在日常工作中&#xff0c;随着业务日渐庞大&#xff0c;不可避免的涉及到调用远程服务&#xff0c;但是远程服务的健壮性和网络稳定性都是不可控因素&#xff0c;因此&#xff0c;我们需要考虑合适的重试机制去处理这些问题&#xff0c;最基础的方式就是手动重试&#xf…

YOLOv5源码中的参数超详细解析(2)— 配置文件yolov5s.yaml

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLOv5配置了5种不同大小的网络模型&#xff0c;分别是YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x&#xff0c;其中YOLOv5n是网络深度和宽度最小但检测速度最快的模型&#xff0c;其他4种模型都是在YOLOv5n的基础上不断…

BEV3D检测模型

Fast-BEV: A Fast and Strong Bird‘s-Eye View Perception Baseline 目录 Fast-BEV: A Fast and Strong Bird‘s-Eye View Perception Baseline 近年来&#xff0c;基于鸟瞰图&#xff08;BEV&#xff09;表示的感知任务越来越受到关注&#xff0c;BEV表示作为下一代自动驾…

常见Git命令

Git常见命令 1. 添加单个文件 git add a.txt2. 添加多个文件 git add a.txt b.txt c.txt3. 添加(commit)修改&#xff0c;此时修改还未push到服务器上 git commit -m "修改了a.txt内容"4. 提交(push)修改&#xff0c;此时修改会同步到服务器上 git push5. 查看当…

《Python入门到精通》os模块详解,Python os标准库

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 os模块详解 1、文件目录操作os.stat() 获取文件状态os.utime() 修改文件时间os.r…