最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Boot的幾種統(tǒng)一處理方式梳理小結(jié)

 更新時間:2023年05月17日 11:14:05   作者:跡_Jason  
這篇文章主要為大家介紹了Spring?Boot的幾種統(tǒng)一處理方式梳理小結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

為了程序返回數(shù)據(jù)友好,返回給前端的數(shù)據(jù)信息是可讀的,往往會考慮將異常進(jìn)行封裝或者組織為結(jié)構(gòu)化返回。

基于 Spring Boot 體系,原本已經(jīng)提供了一些方式實現(xiàn),我們今天主要聊的也是基于 Spring Boot 去解決上述問題。

@ExceptionHandler

@ExceptionHandler 可以作為統(tǒng)一攔截異常方式,對于指定的異常按照你想的方式自由組裝返回的數(shù)據(jù)信息和結(jié)構(gòu)。自由度很高,這里需要注意的一點,往往大家會在這里就直接通過response對象返回響應(yīng)結(jié)果,從而導(dǎo)致ResponseBodyAdvice、HandlerInterceptor之類的后續(xù)處理不再觸發(fā)。 所以在使用該方式時,盡可能不直接使用response.write方式返回,而是使用統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)作為處理返回值。

// 推薦
    @ResponseStatus(value = HttpStatus.OK)
    @ExceptionHandler(value = ConstraintViolationException.class)
    @ResponseBody
    public Resp<Void> onBadMethodArgumentTypeMismatchException(ConstraintViolationException e) {
        return Resp.badRequest(e.getConstraintViolations().stream().findFirst().get().getMessage());
    }
// 不推薦
    @ExceptionHandler(Exception.class)
    public void exception(Exception e, HttpServletResponse response) throws IOException {
        response.setContentType("application/json;charset=UTF-8");
        log.error("系統(tǒng)異常:", e);
        response.getWriter().write($.json.toJsonString(Resp.customize(RpcResult.SERVER_ERROR, "服務(wù)器異常,請稍后再試"));
    }

ErrorController

Spring Boot 在發(fā)生異常的時候,如果沒有異常捕捉器存在,會默認(rèn)調(diào)用/error接口(可以通過server.error.path修改),類似寫接口一樣,對異常進(jìn)行捕捉處理。

該方式優(yōu)先級上會弱一點,但也是一種好方式,還可以自己實現(xiàn)通過配置方式處理異常,可以參考:Dew。

課外拓展

執(zhí)行優(yōu)先級說明

1、HandlerInterceptor.preHandle()
2、 業(yè)務(wù)方法
3、@ExceptionHandler
4、ResponseBodyAdvice.supports()
5、ResponseBodyAdvice.beforeBodyWrite()
6、HandlerInterceptor.postHandle()
7、HandlerInterceptor.afterCompletion()

以上就是Spring Boot的幾種統(tǒng)一處理方式梳理小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Spring Boot統(tǒng)一處理的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

枣阳市| 集安市| 琼结县| 新和县| 福建省| 喀喇沁旗| 资源县| 南丰县| 广河县| 班戈县| 浦县| 株洲县| 白沙| 上虞市| 湖北省| 巢湖市| 建始县| 许昌县| 资兴市| 舟曲县| 宁远县| 浮山县| 体育| 稷山县| 芜湖县| 泸溪县| 内丘县| 西平县| 宝应县| 锦州市| 静宁县| 定陶县| 呼伦贝尔市| 夏河县| 新昌县| 毕节市| 新建县| 衡山县| 民县| 中阳县| 三门峡市|