欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

正文

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

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

@ExceptionHandler

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

ErrorController

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

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

課外拓展

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

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)一處理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • IDEA maven依賴錯(cuò)誤中包下面紅色波浪線

    IDEA maven依賴錯(cuò)誤中包下面紅色波浪線

    這篇文章主要介紹了IDEA maven依賴錯(cuò)誤中包下面紅色波浪線,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java使用ProcessBuilder?API優(yōu)化流程

    Java使用ProcessBuilder?API優(yōu)化流程

    Java?的?Process?API?為開發(fā)者提供了執(zhí)行操作系統(tǒng)命令的強(qiáng)大功能,這篇文章將詳細(xì)介紹如何使用?ProcessBuilder?API?來方便的操作系統(tǒng)命令,需要的可以收藏一下
    2023-06-06
  • Spring 整合 MyBatis的實(shí)現(xiàn)步驟

    Spring 整合 MyBatis的實(shí)現(xiàn)步驟

    SpringMVC 本來就是 Spring 框架的一部分,這兩者無須再做整合,所以 SSM 整合的關(guān)鍵就是Spring對(duì)MyBatis的整合,三大框架整合完成后,將以 Spring 為核心,調(diào)用有關(guān)資源,高效運(yùn)作,這篇文章主要介紹了 Spring 整合 MyBatis的實(shí)現(xiàn)步驟,需要的朋友可以參考下
    2023-02-02
  • Idea 同一窗口導(dǎo)入多個(gè)項(xiàng)目的實(shí)現(xiàn)步驟

    Idea 同一窗口導(dǎo)入多個(gè)項(xiàng)目的實(shí)現(xiàn)步驟

    本文主要介紹了Idea 同一窗口導(dǎo)入多個(gè)項(xiàng)目的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Spring-Cloud Eureka注冊(cè)中心實(shí)現(xiàn)高可用搭建

    Spring-Cloud Eureka注冊(cè)中心實(shí)現(xiàn)高可用搭建

    這篇文章主要介紹了Spring-Cloud Eureka注冊(cè)中心實(shí)現(xiàn)高可用搭建,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • 5分鐘快速學(xué)會(huì)spring boot整合JdbcTemplate的方法

    5分鐘快速學(xué)會(huì)spring boot整合JdbcTemplate的方法

    這篇文章主要給大家介紹了如何通過5分鐘快速學(xué)會(huì)spring boot整合JdbcTemplate的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot整合JdbcTemplate具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java攔截過濾器模式 (Intercepting Filter )實(shí)現(xiàn)方法

    Java攔截過濾器模式 (Intercepting Filter )實(shí)現(xiàn)方法

    攔截過濾器模式(Intercepting Filter Pattern)用于對(duì)應(yīng)用程序的請(qǐng)求或響應(yīng)做一些預(yù)處理/后處理,本文通過實(shí)例代碼介紹Java攔截過濾器模式 (Intercepting Filter )的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • JPA配置詳解之jpaProperties用法

    JPA配置詳解之jpaProperties用法

    這篇文章主要介紹了JPA配置詳解之jpaProperties用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • spring設(shè)置定時(shí)任務(wù)方式(@Scheduled)

    spring設(shè)置定時(shí)任務(wù)方式(@Scheduled)

    這篇文章主要介紹了spring設(shè)置定時(shí)任務(wù)方式(@Scheduled),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • SpringBoot使用自動(dòng)配置xxxAutoConfiguration

    SpringBoot使用自動(dòng)配置xxxAutoConfiguration

    這篇文章介紹了SpringBoot自動(dòng)配置xxxAutoConfiguration的使用方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12

最新評(píng)論