Spring Boot统一功能处理

embedded/2024/11/14 3:09:13/

1. 统一数据返回格式

统一数据返回格式,就是对返回的数据做一个统一的处理:

java">@ControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice {@AutowiredObjectMapper mapper;//判断是否要执行beforeBodyWrite方法@Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return true;}@SneakyThrows@Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {if(body instanceof Result) {return body;}if(body instanceof String) {return mapper.writeValueAsString(Result.success(body));}return Result.success(body);}
}

创建一个类实现RespinseBodyAdvice接口 

@ControllerAdvice 表示控制器通知类

supports方法用于判断当前的响应是否要做处理,true表示需要,则会执行beforeBodyWrite方法来处理,false则不会执行。

注意:如果返回的结果是String类型的话,需要把处理后的body转为String类型,否则会报错。

2. 统一异常处理

如果发生异常时,我们不希望把它展示给用户可以使用统一异常处理,自定义发生异常时展示的内容:

java">@Slf4j
@ControllerAdvice
@ResponseBody
public class ExceptionAdvice {@ExceptionHandlerpublic Result HandleException(Exception e) {log.error("发生异常:", e);return Result.fail("内部错误");}
}

这里可以写多个HandleException方法来处理不同的异常,处理异常时会按照异常的深度顺序对应来处理。

注意:添加了统一异常处理后,发生的异常都会被处理掉,也就不会出现异常信息,需要我们自己用日志打印。


http://www.ppmy.cn/embedded/11683.html

相关文章

用现成的容器来创建一个镜像,或者说再克隆一个一模一样的容器

前言:我在centos系统中使用docker拉取了一个centos镜像,并用这个镜像创建了一个hadoop容器,但是后面我又需要一个相同版本的hadoop镜像来创建其他容器(比如hive容器),但是这个时候docker官网并没有对应版本…

Rust 认识所有权

目录 什么是所有权? 栈(Stack)与堆(Heap)所有权规则变量作用域String 类型内存与分配 变量与数据交互的方式(一):移动变量与数据交互的方式(二):克隆只在栈上的数据:拷贝所有权与函数返回值与作用域引用与借用 可变引用悬垂引用(Dangling References)引用的规则S…

蓝桥杯2024年第十五届省赛真题-爬山

贪心优先队列的题&#xff0c;贪心会漏一个情况&#xff0c;不知道怎么处理&#xff0c;这里直接打表了 2 1 1 48 49 答案是30&#xff0c;贪心是31 专有名词&#xff1a;hack-有新的测试点过不了 #include<bits/stdc.h> using namespace std; #define endl \n #define …

代码随想录训练营总结篇

代码随想录训练营总结篇 在代码训练营刷题的两个月里&#xff0c;我从一个只懂基本理论、代码实现能力经验比较差的人&#xff0c;成长为可以通过许多算法题目的有经验的程序员&#xff0c;我从这个训练营中真正学到了很多。 我也先介绍一下我自己&#xff0c;我是一名普通本科…

mybatis批量查询List实体类

在 MyBatis 中进行批量查询 List 实体类的操作通常使用 foreach 标签来实现。下面是一个示例代码&#xff0c;展示了如何在 MyBatis 中批量查询 List 实体类&#xff1a; 根据主键id 假设有一个名为 User 的实体类&#xff1a; public class User {private Long id;private …

身份证实名接口和身份证OCR接口的组合使用

随着网络技术的快速发展以及对个人信息保护意识的提升&#xff0c;身份证实名认证已成为诸多在线业务中不可或缺的一环。身份证实名接口与身份证OCR接口的有机结合&#xff0c;为用户提供了一种快速、精准、安全的身份信息核验方式。 首先&#xff0c;用户在应用程序或网站界面…

【Redis(5)】Redis哨兵模式配置示例

Redis的三种高可用方案对比参考上一篇博客&#xff1a;深入理解Redis三种高可用方案&#xff0c;以做出明智的选择&#xff0c;下面要探讨的是三种方案其中的一种。 在Redis的主从模式中&#xff0c;虽然可以从节点提供读取操作的负载均衡&#xff0c;并且作为数据的热备份&am…

创建k8s deploy yaml文件的imagePullSecrets语句

镜像仓库是harbor kubectl create secret docker-registry key --docker-server192.168.0.190 --docker-usernameadmin --docker-passwordHarbor12345