SpringBoot创建一个初始化项目

提示:这一篇文章,主要是为了之后可以快速的去搭建项目,当然这篇博客,作者也会根据以后学习到的东西,慢慢去整理

文章目录


前言

搭建一个SpringBoot项目,目的是为了快速开发项目


 项目列表

 响应枚举类

/*** 响应码枚举类,用于定义系统中各种操作的返回码及其对应的信息。*/
public enum ResponseCodeEnum {// 请求成功CODE_200(200, "请求成功"),// 请求的资源不存在CODE_404(404, "请求地址不存在"),// 请求参数错误CODE_600(600, "请求参数错误"),// 信息已存在,通常用于数据重复的场景CODE_601(601, "信息已经存在"),// 服务器内部错误,需要管理员处理CODE_500(500, "服务器返回错误,请联系管理员");// 响应码private Integer code;// 响应信息private String msg;/*** 构造方法,用于初始化枚举值。* @param code 响应码* @param msg 响应信息*/ResponseCodeEnum(Integer code, String msg) {this.code = code;this.msg = msg;}/*** 获取响应码。* @return 响应码*/public Integer getCode() {return code;}/*** 获取响应信息。* @return 响应信息*/public String getMsg() {return msg;}
}

响应数据包装类

/*** 响应数据的通用包装类,用于封装接口调用的返回结果。* <p>* 该类提供了对响应状态、响应码、响应信息和响应数据的封装,适用于各种接口返回数据的统一格式化。* 通过泛型T的支持,可以灵活地携带各种类型的响应数据。** @param <T> 响应数据的类型,使用泛型提供类型安全性和灵活性。*/
public class ResponseVO<T> {/*** 响应的状态,用于表示接口调用的总体状态,例如"success"表示成功。*/private String status;/*** 响应码,用于更详细地表示接口调用的结果状态,例如200表示成功。*/private Integer code;/*** 响应信息,用于对响应状态进行描述,例如"操作成功"。*/private String info;/*** 响应数据,接口调用的实际返回数据,其类型由泛型T指定。*/private T data;/*** 获取响应的状态。** @return 响应的状态字符串。*/public String getStatus() {return status;}/*** 设置响应的状态。** @param status 响应的状态字符串。*/public void setStatus(String status) {this.status = status;}/*** 获取响应码。** @return 响应的码值。*/public Integer getCode() {return code;}/*** 设置响应码。** @param code 响应的码值。*/public void setCode(Integer code) {this.code = code;}/*** 获取响应信息。** @return 响应的信息字符串。*/public String getInfo() {return info;}/*** 设置响应信息。** @param info 响应的信息字符串。*/public void setInfo(String info) {this.info = info;}/*** 获取响应数据。** @return 响应的数据对象,其类型为泛型T。*/public T getData() {return data;}/*** 设置响应数据。** @param data 响应的数据对象,其类型为泛型T。*/public void setData(T data) {this.data = data;}
}

 异常类

/*** 业务异常类,用于表示在业务逻辑执行过程中发生的异常情况。* 继承自RuntimeException,因为它是一种非检查(Unchecked)异常,可以不强制在方法签名中声明。* 这使得业务异常的使用更加灵活,能够更准确地反映业务逻辑中的错误情况。*/
public class BusinessException extends RuntimeException {/*** 错误代码枚举,用于标准化错误代码和错误消息的映射。*/private ResponseCodeEnum codeEnum;/*** 错误代码,用于标识具体的错误类型。*/private Integer code;/*** 错误消息,用于描述错误的具体信息。*/private String message;/*** 带有错误消息和原因的构造函数。* * @param message 错误消息* @param e 异常原因*/public BusinessException(String message, Throwable e) {super(message, e);this.message = message;}/*** 带有错误消息的构造函数。* * @param message 错误消息*/public BusinessException(String message) {super(message);this.message = message;}/*** 带有原因的构造函数。* * @param e 异常原因*/public BusinessException(Throwable e) {super(e);}/*** 使用错误代码枚举构造业务异常。* * @param codeEnum 错误代码枚举,包含错误代码、错误消息等信息。*/public BusinessException(ResponseCodeEnum codeEnum) {super(codeEnum.getMsg());this.codeEnum = codeEnum;this.code = codeEnum.getCode();this.message = codeEnum.getMsg();}/*** 带有错误代码和错误消息的构造函数。* * @param code 错误代码* @param message 错误消息*/public BusinessException(Integer code, String message) {super(message);this.code = code;this.message = message;}/*** 获取错误代码枚举。* * @return 错误代码枚举*/public ResponseCodeEnum getCodeEnum() {return codeEnum;}/*** 获取错误代码。* * @return 错误代码*/public Integer getCode() {return code;}/*** 获取错误消息。* * @return 错误消息*/@Overridepublic String getMessage() {return message;}/*** 重写fillInStackTrace方法,返回当前异常实例。* 业务异常中通常不需要堆栈跟踪信息,因此这个重写方法用于提高异常处理的性能。* * @return 当前异常实例*//*** 重写fillInStackTrace 业务异常不需要堆栈信息,提高效率.*/@Overridepublic Throwable fillInStackTrace() {return this;}
}

返回结果类

/*** 基础控制器类,提供通用的响应构建方法。*/
public class ABaseController {/*** 表示操作成功的状态码。*/protected static final String STATUC_SUCCESS = "success";/*** 表示操作失败或出现错误的状态码。*/protected static final String STATUC_ERROR = "error";/*** 日志记录器,用于记录控制器类的运行时日志。*/protected static final Logger logger = LoggerFactory.getLogger(ABaseController.class);/*** 构建一个表示操作成功的响应。** @param t 返回的数据对象。* @param <T> 数据对象的类型。* @return 带有成功状态的响应对象。*/protected <T> ResponseVO getSuccessResponseVO(T t) {ResponseVO<T> responseVO = new ResponseVO<>();responseVO.setStatus(STATUC_SUCCESS);responseVO.setCode(ResponseCodeEnum.CODE_200.getCode());responseVO.setInfo(ResponseCodeEnum.CODE_200.getMsg());responseVO.setData(t);return responseVO;}/*** 构建一个表示业务错误的响应。** @param e 业务异常对象,包含错误代码和错误信息。* @param t 返回的数据对象。* @param <T> 数据对象的类型。* @return 带有业务错误状态的响应对象。*/protected <T> ResponseVO getBusinessErrorResponseVO(BusinessException e, T t) {ResponseVO vo = new ResponseVO();vo.setStatus(STATUC_ERROR);if (e.getCode() == null) {vo.setCode(ResponseCodeEnum.CODE_600.getCode());} else {vo.setCode(e.getCode());}vo.setInfo(e.getMessage());vo.setData(t);return vo;}/*** 构建一个表示服务器错误的响应。** @param t 返回的数据对象。* @param <T> 数据对象的类型。* @return 带有服务器错误状态的响应对象。*/protected <T> ResponseVO getServerErrorResponseVO(T t) {ResponseVO vo = new ResponseVO();vo.setStatus(STATUC_ERROR);vo.setCode(ResponseCodeEnum.CODE_500.getCode());vo.setInfo(ResponseCodeEnum.CODE_500.getMsg());vo.setData(t);return vo;}}

异常处理器类

/*** 全局异常处理控制器,继承自ABaseController,用于处理应用程序抛出的异常。* 使用@RestControllerAdvice注解标识这是一个全局异常处理类。*/
@RestControllerAdvice
public class AGlobalExceptionHandlerController extends ABaseController {private static final Logger logger = LoggerFactory.getLogger(AGlobalExceptionHandlerController.class);/*** 处理所有类型的异常。* @param e 抛出的异常对象。* @param request HTTP请求对象,用于获取请求URL。* @return 返回一个封装了异常信息的ResponseVO对象。*/@ExceptionHandler(value = Exception.class)Object handleException(Exception e, HttpServletRequest request) {// 记录异常信息到日志logger.error("请求错误,请求地址{},错误信息:", request.getRequestURL(), e);ResponseVO ajaxResponse = new ResponseVO();// 根据不同的异常类型设置响应码和信息// 404 - 请求未找到if (e instanceof NoHandlerFoundException) {ajaxResponse.setCode(ResponseCodeEnum.CODE_404.getCode());ajaxResponse.setInfo(ResponseCodeEnum.CODE_404.getMsg());ajaxResponse.setStatus(STATUC_ERROR);} else if (e instanceof BusinessException) {// 业务异常// 业务错误BusinessException biz = (BusinessException) e;ajaxResponse.setCode(biz.getCode() == null ? ResponseCodeEnum.CODE_600.getCode() : biz.getCode());ajaxResponse.setInfo(biz.getMessage());ajaxResponse.setStatus(STATUC_ERROR);} else if (e instanceof BindException || e instanceof MethodArgumentTypeMismatchException) {// 参数绑定异常或参数类型不匹配异常// 参数类型错误ajaxResponse.setCode(ResponseCodeEnum.CODE_600.getCode());ajaxResponse.setInfo(ResponseCodeEnum.CODE_600.getMsg());ajaxResponse.setStatus(STATUC_ERROR);} else if (e instanceof DuplicateKeyException) {// 数据库主键重复异常// 主键冲突ajaxResponse.setCode(ResponseCodeEnum.CODE_601.getCode());ajaxResponse.setInfo(ResponseCodeEnum.CODE_601.getMsg());ajaxResponse.setStatus(STATUC_ERROR);} else {// 其他未指定的异常ajaxResponse.setCode(ResponseCodeEnum.CODE_500.getCode());ajaxResponse.setInfo(ResponseCodeEnum.CODE_500.getMsg());ajaxResponse.setStatus(STATUC_ERROR);}return ajaxResponse;}
}

测试类

@RestController
public class TestController extends ABaseController {@RequestMapping("/test")public ResponseVO test(){throw new BusinessException("登陆密码错误");}
}

响应结果

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

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

相关文章

面向优秀SCI论文写作的语言大模型提示词设计

模板1&#xff1a;Abstract 润色 I want you to act as an SCI reviewer and evaluate the abstract of a research paper. You may check if the abstract is well-written and serves as an informative and descriptive overview of the research. You may also check if it…

Docker 部署 Nacos v2.3.2 版本

文章目录 Github官网文档Nacos 生态图Nacos Dockerdocker-compose.ymlapplication.propertiesNacos 官方示例 Github https://github.com/alibaba/nacos 官网 https://nacos.io/ 文档 https://nacos.io/docs/latest/what-is-nacos/ Nacos 生态图 Nacos Docker 镜像&…

ARM功耗管理软件之DVFSAVS

安全之安全(security)博客目录导读 思考&#xff1a;功耗管理软件栈及示例&#xff1f;WFI&WFE&#xff1f;时钟&电源树&#xff1f;DVFS&AVS&#xff1f; 目录 一、ARM功耗管理软件之DVFS 二、ARM功耗管理软件之AVS 一、ARM功耗管理软件之DVFS 有一个实现特定…

我的技术十年

前言 十年一瞬&#xff0c;2014 年毕业至今&#xff0c;刚好十年。《异类》一书曾提到“一万小时定律”&#xff0c;要成为某个领域的专家&#xff0c;需要 10000 小时&#xff0c;按比例计算就是&#xff1a;如果你每天工作八小时&#xff0c;一天工作五天&#xff0c;那么成…

2024-07-01_外语学习

文章目录 前言1、Los Angeles至于单个los 是什么意思&#xff1f;我们可以逐词翻译这个西班牙语句子 2. Extraneous non-props attributes (style) were passed to component but could not be automatically inherited because component renders fragment or text root nodes…

python全局解释器锁(GIL)

文章目录 1.cpu工作方式2.python全局解释器锁与多线程3.其他语言的多线程4.如何解决假的多线程 1.cpu工作方式 先来先服务&#xff08;First Come, First Served&#xff0c;FCFS&#xff09;&#xff1a; 最简单的调度算法&#xff0c;按照作业或进程到达的顺序依次执行。没有…

ONLYOFFICE8.1版本桌面编辑器的测评(您的私人办公室)

ONLYOFFICE官网链接&#xff1a;ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE 在线PDF查看器和转换器 | ONLYOFFICE​​​​​​在线办公套件 | ONLYOFFICE 一&#xff0c;引言 在数字化浪潮中&#xff0c;高效、便捷、安全的办公工具对现代职场至关重要。今天&#xff0c;…

SOC模块LoRa-STM32WLE5有哪些值得关注

SoC 是片上系统的缩写&#xff0c;是一种集成芯片&#xff0c;集成了计算机或其他电子系统的所有或大部分组件。这些组件通常包括中央处理器 (CPU)、内存、输入/输出接口和辅助存储接口。包含数字、模拟、混合信号和通常的 RF 信号处理功能&#xff0c;具体取决于应用。片上系统…

守护矿山安全生产:AI视频分析技术在煤矿领域的应用

随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;其在煤矿行业的应用也日益广泛。AI视频智能分析技术作为其中的重要分支&#xff0c;为煤矿的安全生产、过程监测、效率提升和监管决策等提供了有力支持。 一、煤矿AI视频智能分析技术的概述 视频智慧煤矿AI…

6 矩阵相关案例

矩阵计算在CUDA中的应用是并行计算领域的典型场景 &#xff1b; 矩阵算法题通常涉及线性代数的基础知识&#xff0c;以及对数据结构和算法的深入理解。解决这类问题时&#xff0c;掌握一些核心思想和技巧会非常有帮助。以下是一些常见的矩阵算法题解题思想&#xff1a; 动态规划…

二叉树遍历学习

前序遍历: 遍历顺序是根节点&#xff0c;左子树&#xff0c;右子树 中序遍历的顺序是左子树、根节点、右子树 后序遍历的顺序是左子树、右子树、根节点。 /*** Description: 递归 实现 二叉树的 先中后序* Author: wule* Date: 2024/7/1 13:44*/ public class Erchashu {/*** 定…

pytorch nn.Embedding 用法和原理

nn.Embedding 是 PyTorch 中的一个模块&#xff0c;用于将离散的输入&#xff08;通常是词或子词的索引&#xff09;映射到连续的向量空间。它在自然语言处理和其他需要处理离散输入的任务中非常常用。以下是 nn.Embedding 的用法和原理。 用法 初始化 nn.Embedding nn.Embed…

LeetCode 1321, 209, 102

目录 1321. 餐馆营业额变化增长题目链接表要求知识点思路代码 209. 长度最小的子数组题目链接标签暴力法思路代码 滑动窗口思路代码 102. 二叉树的层序遍历题目链接标签思路代码 1321. 餐馆营业额变化增长 题目链接 1321. 餐馆营业额变化增长 表 表Customer的字段为custome…

使用Python实现学生管理系统

文章目录 1. 系统概述2. 系统功能3. 实现细节3.1 初始化学生列表3.2 添加学生3.3 显示所有学生3.4 查找学生3.5 删除学生3.6 主菜单 4. 运行系统 在本文中&#xff0c;我们将使用Python编程语言来开发一个简单的学生管理系统。该系统将允许用户执行基本的学生信息管理操作&…

嵌入式UI开发-lvgl+wsl2+vscode系列:5、事件(Events)

一、前言 这节进行事件的总结&#xff0c;通过事件回调方式将用户和ui的交互行为绑定组合起来。 二、事件示例 1、示例1&#xff08;点击事件&#xff09; #include "../lv_examples.h" #if LV_BUILD_EXAMPLES && LV_USE_SWITCHstatic void event_cb(lv_…

Chapter8 透明效果——Shader入门精要学习笔记

一、基本概念 在Unity中通常使用两种方法来实现透明效果 透明度测试&#xff08;无法达到真正的半透明效果&#xff09;透明度混合&#xff08;关闭了深度写入&#xff09; 透明度测试 基本原理&#xff1a;设置一个阈值&#xff0c;只要片元的透明度小于阈值&#xff0c;就…

全球AI新闻速递7.1

全球AI新闻速递 1.科大讯飞发布讯飞星火 V4.0。 2.成都人形机器人创新中心&#xff1a;基于视觉扩散架构的人形机器人任务生成式模型 R-DDPRM。 3.安徽省人形机器人产业创新中心获批&#xff0c;将打造国内首创、世界领先研究基地。 4.亳州牵手华为打造华佗中医药大模型。 …

[论文精读]Variational Graph Auto-Encoders

论文网址&#xff1a;[1611.07308] Variational Graph Auto-Encoders (arxiv.org) 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎…

DL/T 645与modbus协议是否兼容,有何关系?

不兼容。645是电表协议&#xff0c;modbus是通用控制协议&#xff0c;两个是平行关系&#xff0c;两个协议都可以使用485通信协议&#xff08;物理接口协议&#xff09;进行传输&#xff0c;或传输介质与物理接口相同&#xff0c;软件协议不同。 Modbus有以下三种通信模式 在…

ARM功耗管理软件之时钟电源树

安全之安全(security)博客目录导读 思考&#xff1a;功耗管理软件栈及示例&#xff1f;WFI&WFE&#xff1f;时钟&电源树&#xff1f;DVFS&AVS&#xff1f; 目录 一、时钟&电源树简介 二、时钟树示例 三、电源树示例 一、时钟&电源树简介 时钟门控与自…