Java项目构建基础:统一结果,统一异常,统一日志

统一结果返回统一结果的一般形式结果类枚举统一结果类控制层返回统一异常处理@ControllerAdvice自定义全局异常类统一异常处理器控制层展示统一日志收集Logback配置日志收集异常信息是否响应成功;响应状态码;状态码描述;响应数据其他标识符前三者可定义结果枚举,如:success,code,message 统一结果类 第5个属于自定义返回,利用前4者可定义统一返回对象注意:外接只可以调用统一返回类的方法,不可以直接创建,影刺构造器私有;内置静态方法,返回对象;为便于自定义统一
摘要由CSDN通过智能技术生成
  • 统一结果返回

    • 统一结果的一般形式

    • 结果类枚举

    • 统一结果类

    • 控制层返回

  • 统一异常处理

    • @ControllerAdvice

    • 自定义全局异常类

    • 统一异常处理器

    • 控制层展示

  • 统一日志收集

    • Logback

    • 配置

    • 日志收集异常信息

    • 统一结果返回

      目前的前后端开发大部分数据的传输格式都是json,因此定义一个统一规范的数据格式有利于前后端的交互与UI的展示。

      统一结果的一般形式

    • 是否响应成功;

    • 响应状态码;

    • 状态码描述;

    • 响应数据

    • 其他标识符

    • 结果类枚举

    • 前三者可定义结果枚举,如:success,code,message

    • @Getter
      public enum ResultCodeEnum {
          SUCCESS(true,20000,"成功"),
          UNKNOWN_ERROR(false,20001,"未知错误"),,
          PARAM_ERROR(false,20002,"参数错误"),
          ;
      
          // 响应是否成功
          private Boolean success;
          // 响应状态码
          private Integer code;
          // 响应信息
          private String message;
      
          ResultCodeEnum(boolean success, Integer code, String message) {
              this.success = success;
              this.code = code;
              this.message = message;
          }
      }
      

      统一结果类

    • 第5个属于自定义返回,利用前4者可定义统一返回对象

    • 注意:

    • 外接只可以调用统一返回类的方法,不可以直接创建,影刺构造器私有;

    • 内置静态方法,返回对象;

    • 为便于自定义统一结果的信息,建议使用链式编程,将返回对象设类本身,即return this;

    • 响应数据由于为json格式,可定义为JsonObject或Map形式;

    • @Data
      public class R {
          private Boolean success;
      
          private Integer code;
      
          private String message;
      
          private Map<String, Object> data = new HashMap<>();
      
          // 构造器私有
          private R(){}
      
          // 通用返回成功
          public static R ok() {
              R r = new R();
              r.setSuccess(ResultCodeEnum.SUCCESS.getSuccess());
              r.setCode(ResultCodeEnum.SUCCESS.getCode());
              r.setMessage(ResultCodeEnum.SUCCESS.getMessage());
              return r;
          }
      
          // 通用返回失败,未知错误
          public static R error() {
              R r = new R();
              r.setSuccess(ResultCodeEnum.UNKNOWN_ERROR.getSuccess());
              r.setCode(ResultCodeEnum.UNKNOWN_ERROR.getCode());
              r.setMessage(ResultCodeEnum.UNKNOWN_ERROR.getMessage());
              return r;
          }
      
          // 设置结果,形参为结果枚举
          public static R setResult(ResultCodeEnum result) {
              R r = new R();
              r.setSuccess(result.getSuccess());
              r.setCode(result.getCode());
              r.setMessage(result.getMessage());
              return r;
          }
      
          /**------------使用链式编程,返回类本身-----------**/
      
          // 自定义返回数据
          public R data(Map<String,Object> map) {
              this.setData(map);
              return this;
          }
      
          // 通用设置data
          public R data(String key,Object value) {
              this.data.put(key, value);
              return this;
          }
      
          // 自定义状态信息
          public R message(String message) {
              this.setMessage(message);
              return this;
          }
      
          // 自定义状态码
          public R code(Integer code) {
              this.setCode(code);
              return this;
          }
      
          // 自定义返回结果
          public R success(Boolean success) {
              this.setSuccess(success);
              return this;
          }
      }
      

      控制层返回

    • 视图层使用统一结果

    • @RestController
      @RequestMapping("/api/v1/users")
      public class TeacherAdminController {
      
          @Autowired
          private UserService userService;
      
          @GetMapping
          public R list() {
              List<Teacher> list = teacherService.list(null);
              return R.ok().data("itms", list).message("用户列表");
          }
      }
      
    • json结果

    • {
        "success": true,
        "code": 20000,
        "message": "查询用户列表",
        "data": {
          "itms": [
            {
              "id
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【完整课程列表】 资源汇总下载地址:https://download.csdn.net/download/qq_27595745/55418618 Java SE编程入门教程 collection与collections(共7页).pptx Java SE编程入门教程 java GC(共6页).pptx Java SE编程入门教程 java instanceof(共3页).pptx Java SE编程入门教程 java IO(共28页).pptx Java SE编程入门教程 java Math(共11页).pptx Java SE编程入门教程 java object(共9页).pptx Java SE编程入门教程 java static final(共24页).pptx Java SE编程入门教程 java this和super(共10页).pptx Java SE编程入门教程 java 常用API(共22页).pptx Java SE编程入门教程 javaGUI编程快速入门(1)(共82页).pptx Java SE编程入门教程 java包装器(共9页).pptx Java SE编程入门教程 java反射机制(共16页).pptx Java SE编程入门教程 java泛型(共11页).pptx Java SE编程入门教程 java封装继承多态(共56页).pptx Java SE编程入门教程 java集合(共38页).pptx Java SE编程入门教程 java接口(共21页).pptx Java SE编程入门教程 java和对象方法以及包的使用(共56页).pptx Java SE编程入门教程 java和对象方法以及包的使用(共62页).pptx Java SE编程入门教程 java判断循环(共79页).ppt Java SE编程入门教程 java入门以及变量debug(共63页).pptx Java SE编程入门教程 java设计模式(共17页).pptx Java SE编程入门教程 java数组(共33页).pptx Java SE编程入门教程 java网络编程(共29页).pptx Java SE编程入门教程 java线程(共61页).pptx Java SE编程入门教程 java序列化(共14页).pptx Java SE编程入门教程 java异常(共57页).pptx Java SE编程入门教程 java正则(共8页).pptx Java SE编程入门教程 properties(共3页).pptx Java SE编程入门教程 String字符串(共27页).pptx Java 位运算.docx java正则表达式例子大全 共10页.doc JAVA正则表达式实例教程 共17页.docx JAVA正则表达式实例教程 共17页.pdf 递归算法.docx 堆和栈.wps

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值