异常处理和swagger使用

全局异常处理类

定义全局异常处理类,会将错误全部提交到这个异常处理类中进行处理,这个类会将处理的统一结果响应给前端,如果不添加异常处理类,异常不会按照统一的响应格式进行,前端无法识别,当然也可以在每一个方法中捕获异常,只不过过于繁琐,不采用

处理流程图解:

  • @RestControllerAdvice注解:表示此类是异常处理器且@RestControllerAdvice = @ResponseBody + @ControllerAdvice,所以这个类中的方法的返回值会自动装换为json数据类型,响应回前端

  • @ExceptionHandler注解:表示这个方法能够处理的异常,例如:@ExceptionHandler(Exception.class)表示这个方法可以处理所有异常

import com.springmybatis.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
​
/***  全局异常类*/
@Slf4j
@RestControllerAdvice     // 该注解表示这个类是捕获异常的类
public class GlobalException {
​/*** 统一响应异常结果* @param exception 异常信息* @return 统一结果*/@ExceptionHandler(Exception.class)  // 该注解表示接收所有异常信息public Result exceptionResult(Exception exception){exception.printStackTrace();log.info("出现异常");return Result.error("对不起,输入错误!");}
}

Swagger的介绍及使用

swagger官网:API Documentation & Design Tools for Teams | Swagger,swagger是开放阶段使用的框架,帮助后端后端人员进行后端的接口测试

直接使用swagger非常繁琐,这里使用Knife4j,Knife4j是为java MVC框架集成swagger生成Api文档的增强解决方案,对swagger进行封装,简化使用,可以生成接口文档,以及在线接口调试

使用方式:

1)导入knife4j的maven坐标:

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version>
</dependency>

2)创建配置类,加入knife4j的相关配置:

创建一个普通类继承WebMvcConfigurationSupport类就是knife4j配置类

  /*** 通过knife4j生成接口文档*/@Bean // 由spring框架创建对象并管理对象public Docket docket() {ApiInfo apiInfo = new ApiInfoBuilder().title("接口文档名称").version("2.0")   // 版本号.description("描述信息(也可以是接口名)").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("要扫描的controller包"))// 如:com.sky.controller.paths(PathSelectors.any()).build();return docket;}

3)设置静态资源的映射,否则静态接口文档的页面无法显示

  /*** 设置静态资源映射,重写WebMvcConfigurationSupport类中的addResourceHandlers方法* @param registry*/protected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");}

常用注解

通过注解可以控制生成的接口文档,使接口文档具有可读性

注解说明
@Api用在类上,例如Controller,表示对类的说明
@ApiModel用在类上,一般是实体类,例如entry,DTO,VO
@ApiModelProperty用在属性上,描述属性信息
@AipOperation用在方法上,例如controller的方法,说明方法的用途和作用

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

vue3 常用的知识点

setup:容许在script当中书写组合式API 并且vue3的template不再要求唯一的根元素 <script setup>const name app; </script>组合式API的用法&#xff1a; 可以直接在script标签中定义变量或者函数&#xff0c;然后直接在template当中使用 <template>{{mes…

文件上传总结

一、原理 通过界面上的上传功能上传了一个可执行的脚本文件&#xff0c;而WEB端的系统并未对其进行检测或者检测的逻辑做的不够好&#xff0c;使得恶意用户可以通过文件中上传的一句话木马获得操控权 二、绕过方法 1>前端绕过 1.删除前端校验函数 checkFile() 2.禁用js…

如何实现ECharts图表根据屏幕大小自适应?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue-ECharts自适应 目录 前言 1920*1080分辨率示图 8184*2432分辨率示图 以vue3ts开发为例 (…

高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图

目录 高效工作流&#xff1a;用Mermaid绘制你的专属流程图 一、流程图的使用场景 1.1、流程图flowChart 1.2、使用场景 二、如何使用mermaid画出优雅的流程图 2.1、流程图添加图名 2.2、定义图类型与方向 2.3、节点形状定义 2.3.1、规定语法 2.3.2、不同节点案例 2.…

昇思25天学习打卡营第1天|简单深度学习

前言 昇思MindSpore是一个全场景深度学习框架&#xff0c;旨在实现易开发、高效执行、全场景统一部署三大目标。 其中&#xff0c;易开发表现为API友好、调试难度低&#xff1b;高效执行包括计算效率、数据预处理效率和分布式训练效率&#xff1b;全场景则指框架同时支持云、边…

SpringBoot添加密码安全配置以及Jwt配置

Maven仓库&#xff08;依赖查找&#xff09; 1、SpringBoot安全访问配置 首先添加依赖 spring-boot-starter-security 然后之后每次启动项目之后&#xff0c;访问任何的请求都会要求输入密码才能请求。&#xff08;如下&#xff09; 在没有配置的情况下&#xff0c;默认用户…

【2024最新版】Stable diffusion汉化版安装教程(附SD安装包),一键激活,永久免费!

目前广泛使用的Stable Diffusion Web UI简称(SDWebUI)是发布在开源平台Github上的一个Python项目,与通常的软件安装方法不同,这个项目并不是下载并安装即可使用的应用程序,而是需要准备执行环境,编译源码. 如果你是一个新手不会安装,现在可以直接使用一键启动包. 例如:国内的…

计算机网络实验-RIP配置与分析

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、相关知识 路由信息协议&#xff08;Routing Information Protocol&#xff0c;RIP&#xff09;是一种基于距离向量&#xff08;Distance-Vector&…

noVNC使用与介绍

noVNC使用与介绍报告 1. 概述 VNC&#xff08;Virtual Network Console&#xff0c;虚拟网络控制台&#xff09;是一种流行的远程桌面访问协议&#xff0c;它允许用户通过网络连接到远程计算机的图形界面。VNC协议的实现通常包括两个主要组件&#xff1a;服务器端&#xff08…

不同行情下算法的具体使用!

上一篇我们说到了不同公司算法交易的区分&#xff0c;有朋友提出了不同的行情下的算法交易应该怎么使用&#xff0c;小编今天就带大家了解下&#xff01;当然具体实际状况百出&#xff0c;这种可以实际为准&#xff08;韭菜修养全拼实际探讨交流&#xff09;&#xff01; 我们在…

Java:实现RSA加密与验证的方法详解

1 RSA简介 RSA加密是一种非对称加密。可以在不直接传递密钥的情况下&#xff0c;完成解密。这能够确保信息的安全性&#xff0c;避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程&#xff0c;分别称为公钥和私钥。两者之间有数学相关&#xff0c;该加…

AI画师来袭:精选6款AI美女绘画软件,让创意无限

随着互联网的发展&#xff0c;“AIGC” 一词成为了人们热议的话题&#xff0c;看着 AI 生成的美丽的风景照、生活照以及一些奇观&#xff0c;你最开始以为这些都是真实存在的&#xff0c;但如果有人告诉你&#xff0c;这是 AI 生成的&#xff0c;你一定会再次感叹 AI 技术的强大…

优化医疗数据管理:Kettle ETL 数据采集方案详解

在现代医疗保健领域&#xff0c;数据的准确性、完整性和及时性对于提高医疗服务质量和患者护理至关重要。为了有效管理和利用医疗数据&#xff0c;Kettle ETL&#xff08;Extract, Transform, Load&#xff09;数据采集方案成为了许多医疗机构的首选工具之一。本文将深入探讨Ke…

LinkedList与链表(1万多字超级详细版本)

一. ArrayList的缺陷 上个博客已经熟悉了ArrayList的使用&#xff0c;并且进行了简单模拟实现。通过源码知道&#xff0c;ArrayList底层使用数组来存储元素&#xff1a; public class ArrayList < E > extends AbstractList < E > implements List < E &g…

C++ | Leetcode C++题解之第284题窥视迭代器

题目&#xff1a; 题解&#xff1a; template <class T> class PeekingIterator : public Iterator<T> { public:PeekingIterator(const vector<T>& nums) : Iterator<T>(nums) {flag Iterator<T>::hasNext();if (flag) {nextElement Ite…

河北省高校大数据人工智能实验室案例分享

随着大数据和人工智能技术的快速发展&#xff0c;教育领域也迎来了前所未有的变革机遇。泰迪智能科技作为一家专注于大数据与人工智能领域的高新技术企业&#xff0c;一直致力于将前沿技术引入教育行业&#xff0c;助力高校培养更多具有创新能力和实战经验的复合型人才。本次案…

VMware Cloud Foundation ESXi 主机

一、准备嵌套 ESXi 主机环境# 1)物理 ESXi 主机信息 本次准备用于部署 VCF 嵌套实验环境的物理宿主机的配置信息如下图所示。其实,部署 VCF 环境主要对内存的大小要求比较高,部署完整的管理域相关组件下来差不多就要占用 200 GB左右内存,而对 CPU 和存储的需求可以根据实…

商汤提出的BRECQ量化框架是个什么?

商汤提出的BRECQ量化框架是个什么&#xff1f; 引言 近年来&#xff0c;深度学习在多个领域取得了显著进展&#xff0c;但其巨大的计算成本和内存占用问题逐渐凸显。为了压缩和加速已训练好的网络&#xff0c;量化成为了一种重要的技术手段。量化主要分为两类&#xff1a;量化…

简洁高效的设备稼动率采集系统(一)

前言&#xff1a; 在自动化生产行业&#xff0c;每个公司都需要一款高效的生产设备&#xff0c;那我们怎么体现出设备的高效呢&#xff1f; 可以采集设备的状态&#xff0c;经过成熟的算法&#xff0c;得到设备的稼动率。设备稼动率是衡量生产设备在一定时间内真正处于生产状态…

Linux---01---安装VMware

一. 什么时Linux Linux 是一个开源的类 Unix 操作系统,Linux 是许多计算机硬件的底层操作系统&#xff0c;特别是服务器、嵌入式系统和个人电脑。它支持多种架构&#xff0c;包括 x86、x64、ARM 和 MIPS 等。Linux 因其稳定性、安全性、开源性以及广泛的社区支持而广受欢迎。 …