亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot中的@RestControllerAdvice注解詳解

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

1. @RestControllerAdvice注解詳解

1.1 概述

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

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

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

1.2 用途

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

1.3 基本使用

要使用@RestControllerAdvice注解,只需在類上添加該注解。這個類應(yīng)包含一個或多個帶有@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的結(jié)合

@RestControllerAdvice通常與@ExceptionHandler注解一起使用。在全局異常處理類中,你可以定義多個帶有@ExceptionHandler注解的方法,用于處理不同類型的異常。當指定類型的異常在整個應(yīng)用程序中拋出時,相應(yīng)的`@ExceptionHandler方法將被調(diào)用以處理該異常。由于@RestControllerAdvice注解自動將異常處理方法的返回值轉(zhuǎn)換為HTTP響應(yīng)的主體,因此,你無需使用@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注解,異常處理方法的返回值將自動轉(zhuǎn)換為HTTP響應(yīng)的主體。

1.6 總結(jié)

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

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

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

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

相關(guān)文章

  • SpringBoot配置GlobalExceptionHandler全局異常處理器案例

    SpringBoot配置GlobalExceptionHandler全局異常處理器案例

    這篇文章主要介紹了SpringBoot配置GlobalExceptionHandler全局異常處理器案例,通過簡要的文章說明如何去進行配置以及使用,需要的朋友可以參考下
    2021-06-06
  • Java語言Consistent Hash算法學(xué)習(xí)筆記(代碼示例)

    Java語言Consistent Hash算法學(xué)習(xí)筆記(代碼示例)

    這篇文章主要介紹了Java語言Consistent Hash算法學(xué)習(xí)筆記(代碼示例),分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • MyBatis-Ext快速入門實戰(zhàn)

    MyBatis-Ext快速入門實戰(zhàn)

    MyBatis-Ext是MyBatis的增強擴展,和我們平常用的Mybatis-plus非常類似,本文主要介紹了MyBatis-Ext快速入門實戰(zhàn),感興趣的可以了解一下
    2021-10-10
  • springBoot詳解集成Swagger流程

    springBoot詳解集成Swagger流程

    Swagger是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化?Restful?風(fēng)格的?Web?服務(wù)??傮w目標是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來更新。文件的方法、參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來始終保持同步
    2022-06-06
  • java基于反射得到對象屬性值的方法

    java基于反射得到對象屬性值的方法

    這篇文章主要介紹了java基于反射得到對象屬性值的方法,結(jié)合實例形式分析了java基于反射獲取對象屬性值的相關(guān)實現(xiàn)方法與操作技巧,需要的朋友可以參考下
    2017-03-03
  • Java synchronized與CAS使用方式詳解

    Java synchronized與CAS使用方式詳解

    提到Java的知識點一定會有多線程,JDK版本不斷的更迭很多新的概念和方法也都響應(yīng)提出,但是多線程和線程安全一直是一個重要的關(guān)注點。比如說我們一入門就學(xué)習(xí)的synchronized怎么個實現(xiàn)和原理,還有總是被提到的CAS是啥,他和synchronized關(guān)系是啥?請往下看
    2023-01-01
  • 圖解Springboot集成七牛云并實現(xiàn)圖片上傳功能過程

    圖解Springboot集成七牛云并實現(xiàn)圖片上傳功能過程

    在實際開發(fā)中 ,基本都會有應(yīng)用到文件上傳的場景,但隨著或多或少的需求問題,之前有在springboot上用過七牛云實現(xiàn)圖片上傳,今天因為某些原因又重新使用了下七牛云因此想總結(jié)下七牛云
    2021-11-11
  • 詳解Spring Boot中如何自定義SpringMVC配置

    詳解Spring Boot中如何自定義SpringMVC配置

    這篇文章主要給大家介紹了關(guān)于Spring Boot中如何自定義SpringMVC配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-09-09
  • 最新評論