成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們一起聊聊 Spring 統(tǒng)一處理異常與響應(yīng)

開發(fā) 前端
定義統(tǒng)一的異常處理流程,通過@RestControllerAdvice與@ExceptionHandler注解可以對Controller中的異常統(tǒng)一處理。

在web開發(fā)中,規(guī)范所有請求響應(yīng)類型,不管是對前端數(shù)據(jù)處理,還是后端統(tǒng)一數(shù)據(jù)解析都是非常重要的。今天我們簡單的方式實現(xiàn)如何實現(xiàn)這一效果。

實現(xiàn)方式

  1. 定義響應(yīng)類型
public class ResponseResult<T> {

    private static final String SUCCESS_CODE = "000";
    private static final String FAILURE_CODE = "999";

    private String code;
    private String message;
    private T data;
    
    public static <T> ResponseResult<T> ok(T data){
        ResponseResult responseResult = new ResponseResult();
        responseResult.setCode(SUCCESS_CODE);
        responseResult.setData(data);
        return responseResult;
    }

    public static ResponseResult fail(String code, String message){
        if( code == null ){
            code = FAILURE_CODE;
        }
        ResponseResult responseResult = new ResponseResult();
        responseResult.setCode(code);
        responseResult.setMessage(message);
        return responseResult;
    }

    public static ResponseResult fail(String message){
        return fail(FAILURE_CODE, message);
    }
}
  1. 定義統(tǒng)一的異常處理流程,通過@RestControllerAdvice與@ExceptionHandler注解可以對Controller中的異常統(tǒng)一處理。
@RestControllerAdvice
public class ControllerAdviceHandle {
    
    @ExceptionHandler(Exception.class)
    public ResponseResult handleException(Exception exception) {
        BusException busException;
        if (exception instanceof BusException asException) {
            busException = asException;
        } else {
            busException = convertException(exception);
        }
        return ResponseResult.fail(busException.getCode(), busException.getMessage());
    }
}
  1. 定義統(tǒng)一響應(yīng)攔截,通過是實現(xiàn)接口ResponseBodyAdvice,這里可以和上面的異常一起處理。
public class ControllerAdviceHandle implements ResponseBodyAdvice {
    
    @Override
    public boolean supports(MethodParameter returnType, Class converterType) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType,
                                  ServerHttpRequest request, ServerHttpResponse response) {
        if( body instanceof ResponseResult){
            return body;
        }
        return ResponseResult.ok(body);
    }
}
  1. 定義spring配置,實現(xiàn)自動裝配

在resource目錄添加自動注入配置META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,這樣通過引入jar就可以自動使用該配置。

cn.cycad.web.response.ResponseConfig

應(yīng)用示例

  1. 比如現(xiàn)在有一個User實體,我們通過繼承基類。
@RestController
@RequestMapping("/test")
public class TestController {
    
    @GetMapping("/{val}")
    public Object get(@PathVariable("val") String val) throws BusException {
        if( "1".equals(val) ){
            throw new BusException("參數(shù)錯誤");
        }
        return Map.of("val",val);
    }

}
  1. 通過調(diào)用請求,可以看到不管是否異常,結(jié)果都是下面的格式。
{
  "code": "999",
  "message": null,
  "data": null
}

責(zé)任編輯:武曉燕 來源: Java技術(shù)指北
相關(guān)推薦

2025-02-13 00:34:22

Spring對象系統(tǒng)

2019-08-22 14:02:00

Spring BootRestful APIJava

2022-04-06 08:23:57

指針函數(shù)代碼

2024-02-26 00:00:00

架構(gòu)老化重構(gòu)

2024-02-20 21:34:16

循環(huán)GolangGo

2021-08-27 07:06:10

IOJava抽象

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發(fā)模式

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-09-10 21:42:31

2020-05-26 13:48:05

后端框架異常

2024-01-29 09:01:20

React列表模式

2023-07-04 08:06:40

數(shù)據(jù)庫容器公有云

2023-12-06 08:26:19

Service數(shù)據(jù)庫

2022-10-28 07:27:17

Netty異步Future

2022-11-12 12:33:38

CSS預(yù)處理器Sass

2022-02-14 07:03:31

網(wǎng)站安全MFA

2022-01-04 12:08:46

設(shè)計接口

2022-06-26 09:40:55

Django框架服務(wù)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 韩国主播午夜大尺度福利 | av黄色免费 | 久久久青草婷婷精品综合日韩 | 欧美激情一区二区三级高清视频 | 久久激情网| 欧美精品久久久久久久久久 | 狠狠插狠狠操 | 一级黄色片免费 | 亚洲日日夜夜 | 99精品国产一区二区三区 | 欧美在线 | 在线一区视频 | 久草免费视 | 天天干天天操 | 久久国产精品久久 | 国产一区二区三区四区区 | 欧美精品一区二区蜜桃 | 国产高清视频在线观看 | 麻豆一区一区三区四区 | 欧美激情一区二区三级高清视频 | 久久精品亚洲欧美日韩久久 | 久久亚洲精品久久国产一区二区 | 国产精品久久久久久久一区二区 | 欧美精品久久久 | 欧美老少妇一级特黄一片 | 综合自拍 | 亚洲女人天堂成人av在线 | 99视频在线免费观看 | 巨大黑人极品videos精品 | 9久9久9久女女女九九九一九 | 国产福利视频网站 | 超碰在线免费公开 | 亚洲精品福利视频 | 夜夜久久 | 81精品国产乱码久久久久久 | 日韩免费一区二区 | 日本特黄a级高清免费大片 国产精品久久性 | 九色 在线 | 久久久久久国模大尺度人体 | 97国产精品| 在线伊人网 |