统一返回对象封装和统一异常捕获封装springbootstarter-创新互联

好久没有更新文章了,高龄开发没什么技术,去了外包公司后没怎么更新文章了。今天分享下统一处理starter,相信开发web系统的时候都是会涉及到前后端的交互,而后端返回数据的时候一般都会统一封装一个返回对象和统一处理异常,一般情况下都是在controller的每个方法中调用封装的对象,把相应的数据塞到data字段,然后返回给前端。而异常处理则是抛出某个业务异常,然后利用spring切面进行拦截处理。每个项目都需要做这些重复的动作,所以我把这个处理封装成了starter,下面介绍已下这个starter的使用,最后给出git库供大家学习交流。

专注于为中小企业提供成都网站设计、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业繁昌免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

## 添加依赖
添加统一处理依赖

   io.gitee.javalaoniu    jud-springboot-starter   0.0.1

## 启用统一处理
添加 @EnableUnifiedDisposal 注解

import io.gitee.javalaoniu.jud.annotation.EnableUnifiedDisposal;  
import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;  
  
@EnableUnifiedDisposal  
@SpringBootApplication  
public class JudDemoApplication {  
    public static void main(String[] args) {  
        SpringApplication.run(JudDemoApplication.class, args);  
    }  
}

## 拦截的处理
像平常一样返回数据即可,不需要做其它

import io.gitee.javalaoniu.jud.annotation.IgnoreResponseAdvice;  
import io.gitee.javalaoniu.jud.common.Result;  
import io.gitee.javalaoniu.jud.exception.BusinessException;  
import io.gitee.javalaoniu.jud.exception.ExceptionCode;  
import org.springframework.web.bind.annotation.GetMapping;  
import org.springframework.web.bind.annotation.RestController;  
  
import java.util.ArrayList;  
import java.util.List;  
  
@RestController  
public class DemoController {  
  
    @GetMapping("test1")  
    public String stringTest() {  
        return "hello";  
        // {"code":200,"data":"hello","succ":true,"ts":1673943672244}
    }  
  
    @GetMapping("test2")  
    public String stringNullTest() {  
        return null;  
        // {"code":200,"data":"","succ":true,"ts":1673943691844}
    }  
  
    @GetMapping("test3")  
    public Object objectEntityTest() {  
        DemoEntity demoEntity = new DemoEntity();  
        demoEntity.setName("张三");  
        demoEntity.setAge(50);  
        demoEntity.setSex(false);  
        demoEntity.setSalary(4500000001542.26);  
        return demoEntity;  
        // {"succ":true,"ts":1673943709119,"data":{"name":"张三","age":50,"sex":false,"salary":4.50000000154226E12},"code":200,"msg":null}
    }  
  
    @GetMapping("test4")  
    public Object objectNotNullTest() {  
        return "hello Object";  
        // {"code":200,"data":"hello Object","succ":true,"ts":1673943726435}
    }  
  
    @GetMapping("test5")  
    public Object objectNullTest() {  
        return null;  
        // 啥也没返回,但是如果配置了json转换器的话会返回:{"code":200,"data":null,"succ":true,"ts":1673943726435}
    }  
  
    @GetMapping("test6")  
    public ListlistTest() {  
        DemoEntity demoEntity2 = new DemoEntity();  
        demoEntity2.setName("张三");  
        demoEntity2.setAge(50);  
        demoEntity2.setSex(false);  
        demoEntity2.setSalary(4500000001542.26);  
  
        DemoEntity demoEntity = new DemoEntity();  
        demoEntity.setName("张三");  
        demoEntity.setAge(50);  
        demoEntity.setSex(false);  
        demoEntity.setSalary(4500000001542.26);  
  
        Listlist = new ArrayList<>();  
        list.add(demoEntity);  
        list.add(demoEntity2);  
  
        return list;  
        // {"succ":true,"ts":1673943797079,"data":[{"name":"张三","age":50,"sex":false,"salary":4.50000000154226E12},{"name":"张三","age":50,"sex":false,"salary":4.50000000154226E12}],"code":200,"msg":null}
    }  
  
    @GetMapping("test7")  
    public ListlistNullTest() {  
        return null;  
        // {"succ":true,"ts":1673943819382,"data":null,"code":200,"msg":null}
    }  
  
    @GetMapping("test8")  
    public Result resultTest() {  
        DemoEntity demoEntity = new DemoEntity();  
        demoEntity.setName("张三");  
        demoEntity.setAge(50);  
        demoEntity.setSex(false);  
        demoEntity.setSalary(4500000001542.2656564545);  
        return Result.success(demoEntity);  
        // {"succ":true,"ts":1673943832081,"data":{"name":"张三","age":50,"sex":false,"salary":4.500000001542266E12},"code":200,"msg":null}
    }  
  
    @IgnoreResponseAdvice  
    @GetMapping("test9")  
    public String ignoreResponseTest() {  
        return "IgnoreResponseAdvice";  
        // IgnoreResponseAdvice
    }  
  
    @GetMapping("test10")  
    public String businessExceptionTest() {  
        throw new BusinessException(ExceptionCode.EXCEPTION);  
        // {"succ":false,"ts":1673943862588,"data":null,"code":500,"msg":"服务器开小差,请稍后再试(Internal Server Error)"}
    }  
}

## 不拦截处理
对不需要统一处理的controller或者方法使用下面注解

@IgnoreResponseAdvice  
@GetMapping("test9")  
public String ignoreResponseTest() {  
    // 在方法上使用,直接返回IgnoreResponseAdvice字符串给前端
    return "IgnoreResponseAdvice";  
}

可以看到,使用统一处理starter后,统一返回对象和统一异常处理不需要自己在处理,非常方便。

git仓库地址:https://gitee.com/javalaoniu/javalaoniu-jud

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享名称:统一返回对象封装和统一异常捕获封装springbootstarter-创新互联
网址分享:http://hbruida.cn/article/shchp.html