统一返回对象封装和统一异常捕获封装springboot starter

科技资讯 投稿 6400 0 评论

统一返回对象封装和统一异常捕获封装springboot starter

添加依赖

添加统一处理依赖

<dependency>  
    <groupId>io.gitee.javalaoniu</groupId>  
    <artifactId>jud-springboot-starter</artifactId>  
    <version>0.0.1</version>  
</dependency>

启用统一处理

添加 @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 List<DemoEntity> listTest( {  
        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;  
  
        List<DemoEntity> list = 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 List<String> listNullTest( {  
        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

编程笔记 » 统一返回对象封装和统一异常捕获封装springboot starter

赞同 (28) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽