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

SpringBoot中的@RestControllerAdvice注解詳解

 更新時間:2024年01月16日 09:34:12   作者:加油當當  
這篇文章主要介紹了SpringBoot中的@RestControllerAdvice注解詳解,RestControllerAdvice注解用于創(chuàng)建全局異常處理類,用于捕獲和處理整個應用程序中的異常,需要的朋友可以參考下

1. @RestControllerAdvice注解詳解

1.1 概述

@RestControllerAdvice注解是Spring MVC和Spring Boot應用程序中用于定義全局異常處理類的注解,它是@ControllerAdvice注解的特殊版本,用于RESTful風格的應用程序。

@RestControllerAdvice可以捕獲整個應用程序中拋出的異常,并對它們進行處理。這樣可以實現(xiàn)在整個應用程序范圍內統(tǒng)一處理異常的目標;

@RestControllerAdvice注解實際上是@ControllerAdvice和@ResponseBody注解的組合。這意味著,當你使用@RestControllerAdvice注解時,異常處理方法的返回值將自動轉換為HTTP響應的主體;

1.2 用途

@RestControllerAdvice注解用于創(chuàng)建全局異常處理類,用于捕獲和處理整個應用程序中的異常。它適用于RESTful風格的應用程序,因為它自動將異常處理方法的返回值轉換為HTTP響應的主體。

1.3 基本使用

要使用@RestControllerAdvice注解,只需在類上添加該注解。這個類應包含一個或多個帶有@ExceptionHandler注解的方法,用于處理不同類型的異常。

例如:

@RestControllerAdvice
public class GlobalRestExceptionHandler {
    @ExceptionHandler(UserNotFoundException.class)
    public ResponseEntity<String> handleUserNotFoundException(UserNotFoundException ex) {
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
    }
    @ExceptionHandler(IllegalArgumentException.class)
    public ResponseEntity<String> handleIllegalArgumentException(IllegalArgumentException ex) {
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage());
    }
}

1.4 屬性

@RestControllerAdvice注解繼承了@ControllerAdvice注解的屬性:

annotations:

用于指定需要掃描的其他注解。只有帶有這些注解的類中的異常處理方法才會被全局異常處理類處理。

basePackages:

別名:value

用于指定需要掃描的包名。只有這些包下的類中的異常處理方法才會被全局異常處理類處理。

value:

是默認的屬性;

用于指定要處理的異常類型。如果沒有指定value屬性,則默認處理所有的異常類型;

basePackageClasses:

用于指定需要掃描的類。只有這些類中的異常處理方法才會被全局異常處理類處理。

assignableTypes:

用于指定需要掃描的類或接口。只有這些類或接口的實現(xiàn)類中的異常處理方法才會被全局異常處理類處理。

這些屬性可以幫助你限制全局異常處理類的作用范圍,使其只處理特定包、類或接口下的異常。

1.5 與@ExceptionHandler的結合

@RestControllerAdvice通常與@ExceptionHandler注解一起使用。在全局異常處理類中,你可以定義多個帶有@ExceptionHandler注解的方法,用于處理不同類型的異常。當指定類型的異常在整個應用程序中拋出時,相應的`@ExceptionHandler方法將被調用以處理該異常。由于@RestControllerAdvice注解自動將異常處理方法的返回值轉換為HTTP響應的主體,因此,你無需使用@ResponseBody`注解。

例如:

@RestControllerAdvice
public class GlobalRestExceptionHandler {
    @ExceptionHandler(UserNotFoundException.class)
    public ResponseEntity<String> handleUserNotFoundException(UserNotFoundException ex) {
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
    }
    @ExceptionHandler(IllegalArgumentException.class)
    public ResponseEntity<String> handleIllegalArgumentException(IllegalArgumentException ex) {
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage());
    }
    @ExceptionHandler(Exception.class)
    public ResponseEntity<String> handleException(Exception ex) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("An unexpected error occurred: " + ex.getMessage());
    }
}

在上面的代碼中,我們定義了一個全局RESTful異常處理類,并處理了三種類型的異常:UserNotFoundException、IllegalArgumentException和Exception。對于每種異常,我們分別返回一個帶有HTTP狀態(tài)碼和錯誤消息的ResponseEntity對象。由于我們使用了@RestControllerAdvice注解,異常處理方法的返回值將自動轉換為HTTP響應的主體。

1.6 總結

@RestControllerAdvice注解是一個用于定義全局RESTful異常處理類的類級別注解。通過使用@RestControllerAdvice和@ExceptionHandler注解,你可以實現(xiàn)在整個應用程序范圍內統(tǒng)一處理RESTful風格的異常。它自動將異常處理方法的返回值轉換為HTTP響應的主體,使得代碼更加簡潔、可讀和可維護。

2. @RestControllerAdvice注解 與 @ControllerAdvice注解的區(qū)別

特性@ControllerAdvice注解@RestControllerAdvice注解【實】
類型Class<?extends Throwable>[]String
適用場景適用于傳統(tǒng)的Web應用程序,需要進行視圖解析和渲染的場景適用于構建RESTful風格的Web服務,需要直接返回JSON格式響應體的場景
返回值返回視圖名稱或包裝后的ModelAndView對象,用于視圖解析和渲染返回JSON格式的響應體,用于直接返回給客戶端
作用處理控制器中的異常、綁定和預處理等操作,并在多個控制器中共享處理控制器中的異常、綁定和預處理等操作,并直接返回JSON格式的響應體,用于構建RESTful風格的Web服務
使用的注解@ExceptionHandler、@InitBinder和@ModelAttribute等注解@ExceptionHandler、@InitBinder和@ModelAttribute等注解
返回值轉換方式通過視圖解析器和模板引擎將返回值轉換為HTML或其他格式的響應體直接將返回值轉換為JSON格式的響應體
返回值的處理方式需要進行視圖解析和渲染,將結果包裝成HTTP響應體,再返回給客戶端直接將結果包裝成HTTP響應體,并返回給客戶端

到此這篇關于SpringBoot中的@RestControllerAdvice注解詳解的文章就介紹到這了,更多相關@RestControllerAdvice注解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java使用fill()數(shù)組填充的實現(xiàn)

    Java使用fill()數(shù)組填充的實現(xiàn)

    這篇文章主要介紹了Java使用fill()數(shù)組填充的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • 詳解Java的Spring框架中的事務管理方式

    詳解Java的Spring框架中的事務管理方式

    這篇文章主要介紹了Java的Spring框架中的事務管理方式,Spring框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • 淺談MyBatisPlus注解@EnumValue避坑

    淺談MyBatisPlus注解@EnumValue避坑

    本文介紹如何使用MyBatisPlus的注解@EnumValue聲明枚舉類,同時指出需要避開的幾個常見坑點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-09-09
  • MyBatis-Plus工具使用之EntityWrapper解析

    MyBatis-Plus工具使用之EntityWrapper解析

    這篇文章主要介紹了MyBatis-Plus工具使用之EntityWrapper解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • ByteArrayOutputStream與InputStream互相轉換方式

    ByteArrayOutputStream與InputStream互相轉換方式

    這篇文章主要介紹了ByteArrayOutputStream與InputStream互相轉換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring?Cloud?Loadbalancer服務均衡負載器詳解

    Spring?Cloud?Loadbalancer服務均衡負載器詳解

    這篇文章主要介紹了Spring?Cloud?Loadbalancer服務均衡負載器,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 簡單了解SpringBoot過濾器及使用方式

    簡單了解SpringBoot過濾器及使用方式

    這篇文章主要介紹了簡單了解SpringBoot過濾器及使用方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Java中Jar包反編譯解壓和壓縮操作方法

    Java中Jar包反編譯解壓和壓縮操作方法

    JAR文件就是Java 檔案文件Java Archive,它是 Java 的一種文檔格式,這篇文章主要介紹了Java中Jar包反編譯解壓和壓縮,需要的朋友可以參考下
    2023-09-09
  • SpringBoot項目引入token設置方式

    SpringBoot項目引入token設置方式

    本文詳細介紹了JWT(JSON Web Token)的基本概念、結構、應用場景以及工作原理,通過動手實踐,展示了如何在Spring Boot項目中實現(xiàn)JWT的生成、驗證和攔截器配置
    2025-01-01
  • java讀取文件和寫入文件的方式(簡單實例)

    java讀取文件和寫入文件的方式(簡單實例)

    下面小編就為大家?guī)硪黄猨ava讀取文件和寫入文件的方式(簡單實例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10

最新評論

宜昌市| 新干县| 普定县| 开远市| 宜兰县| 蒙山县| 大埔区| 即墨市| 平湖市| 仁布县| 长兴县| 贞丰县| 肃宁县| 深水埗区| 江口县| 通州市| 桐梓县| 屯留县| 潢川县| 平凉市| 仙桃市| 五常市| 肥城市| 循化| 拉萨市| 东乡| 梨树县| 闽清县| 四会市| 锡林浩特市| 汕尾市| 台山市| 读书| 固始县| 荥阳市| 银川市| 东乡县| 夏津县| 甘德县| 承德市| 电白县|