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

SpringBoot中的@RestControllerAdvice注解詳解

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

1. @RestControllerAdvice注解詳解

1.1 概述

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

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

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

1.2 用途

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

1.3 基本使用

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

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

basePackages:

別名:value

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

value:

是默認(rèn)的屬性;

用于指定要處理的異常類型。如果沒(méi)有指定value屬性,則默認(rèn)處理所有的異常類型;

basePackageClasses:

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

assignableTypes:

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

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

1.5 與@ExceptionHandler的結(jié)合

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

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

1.6 總結(jié)

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

    springBoot詳解集成Swagger流程

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

    java基于反射得到對(duì)象屬性值的方法

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

    Java synchronized與CAS使用方式詳解

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

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

    在實(shí)際開(kāi)發(fā)中 ,基本都會(huì)有應(yīng)用到文件上傳的場(chǎng)景,但隨著或多或少的需求問(wèn)題,之前有在springboot上用過(guò)七牛云實(shí)現(xiàn)圖片上傳,今天因?yàn)槟承┰蛴种匦率褂昧讼缕吲T埔虼讼肟偨Y(jié)下七牛云
    2021-11-11
  • 詳解Spring Boot中如何自定義SpringMVC配置

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

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