SpringBoot开发详解(六)-- 异常统一管理以及AOP的使用

AOP在SpringBoot中的使用

使用切面管理异常的原因:

今天的内容干货满满哦~并且是我自己在平时工作中的一些问题与解决途径,对实际开发的作用很大,好,闲言少叙,让我们开始吧~~

我们先看一张错误信息在APP中的展示图:
这里写图片描述

是不是体验很差,整个后台错误信息都在APP上打印了。
作为后台开发人员,我们总是在不停的写各种接口提供给前端调用,然而不可避免的,当后台出现BUG时,前端总是丑陋的讲错误信息直接暴露给用户,这样的用户体验想必是相当差的(不过后台开发一看就知道问题出现在哪里)。同时,在解决BUG时,我们总是要问前端拿到参数去调适,排除各种问题(网络,Json体错误,接口名写错……BaLa……BaLa……BaLa)。在不考虑前端容错的情况下。我们自己后台有没有优雅的解决这个问题的方法呢,今天这篇我们就来使用AOP统一对异常进行记录以及返回。

SpringBoot引入AOP

在SpringBoot中引入AOP是一件很方便的事,和其他引入依赖一样,我们只需要在POM中引入starter就可以了:

<!--spring切面aop依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

返回体报文定义

接下来我们先想一下,一般我们返回体是什么样子的呢?或者你觉得一个返回的报文应该具有哪些特征。

  • 成功标示:可以用boolean型作为标示位。

  • 错误代码:一般用整型作为标示位,罗列的越详细,前端的容错也就能做的更细致。

  • 错误信息:使用String作为错误信息的描述,留给前端是否展示给用户或者进入其他错误流程的使用。

  • 结果集:在无错误信息的情况下所得到的正确数据信息。一般是个Map,前端根据Key取值。

以上是对一个返回体报文一个粗略的定义了,如果再细致点,可以使用签名进行验签功能活着对明文数据进行对称加密等等。这些我们今天先不讨论,我们先完成一个能够使用的接口信息定义。

我们再对以上提到这些信息做一个完善,去除冗余的字段,对差不多的类型进行合并于封装。这样的想法下,我们创建一个返回体报文的实体类。

public class Result<T> {

   //    error_code 状态值:0 极为成功,其他数值代表失败
   private Integer status;

   //    error_msg 错误信息,若status为0时,为success
   private String msg;

   //    content 返回体报文的出参,使用泛型兼容不同的类型
   private T data;

   public Integer getStatus() {
       return status;
   }

   public void setStatus(Integer code) {
       this.status = code;
   }

   public String getMsg() {
       return msg;
   }

   public void setMsg(String msg) {
       this.msg = msg;
   }

   public T getData(Object object) {
       return data;
   }

   public void setData(T data) {
       this.data = data;
   }

   public T getData() {
       return data;
   }

   @Override
   public String toString() {
       return 
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值