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…

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; 动态规划…

嵌入式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; 目录 一、时钟&电源树简介 二、时钟树示例 三、电源树示例 一、时钟&电源树简介 时钟门控与自…

Victor CMS v1.0 SQL 注入漏洞(CVE-2022-28060)

前言 CVE-2022-28060 是 Victor CMS v1.0 中的一个SQL注入漏洞。该漏洞存在于 /includes/login.php 文件中的 user_name 参数。攻击者可以通过发送特制的 SQL 语句&#xff0c;利用这个漏洞执行未授权的数据库操作&#xff0c;从而访问或修改数据库中的敏感信息。 漏洞详细信…

论文阅读_优化RAG系统的检索

英文名称: The Power of Noise: Redefining Retrieval for RAG Systems 中文名称: 噪声的力量&#xff1a;重新定义RAG系统的检索 链接: https://arxiv.org/pdf/2401.14887.pdf 作者: Florin Cuconasu, Giovanni Trappolini, Federico Siciliano, Simone Filice, Cesare Campag…

App测试技术(纯理论)

之前我们也学习过一些普通用例的设计, 如功能, 性能, 安全性, 兼容性, 易用性, 界面的测试用例设计, 之前我们讲的基本都是对于Web应用而言的, 这里我们来讲一下移动端的App测试用例设计. 功能方面 安装&卸载测试 这是只属于App的一类测试, 再平常我们使用移动设备(手机…

【第11章】MyBatis-Plus条件构造器(上)

文章目录 前言一、功能详解1. allEq2. eq3. ne4. gt5. ge6. lt7. le8. between9. notBetween10. like11. notLike12. likeLeft13. likeRight14. notLikeLeft15. notLikeRight16. isNull17. in18. notIn19. inSql20. notInSql21. eqSqlSince 3.5.622. gtSql Since 3.4.3.223. ge…

Linux4(Docker)

目录 一、Docker介绍 二、Docker结构 三、Docker安装 四、Docker 镜像 五、Docker 容器 六、Docker 安装nginx 七、Docker 中的MySQL部署 一、Docker介绍 Docker&#xff1a;是给予Go语言实现的开源项目。 Docker的主要目标是“Build,Ship and Run Any App,Anywhere” 也…