日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

詳解SpringBoot錯誤處理

來源: 責編: 時間:2024-03-27 09:26:03 248觀看
導讀環境:SpringBoot2.7.161. 簡介默認情況下,Spring Boot提供了一個/error映射,以合理的方式處理所有錯誤,并且它在servlet容器中注冊為“全局”錯誤頁面。對于機器客戶端,它會生成一個JSON響應,其中包含錯誤、HTTP狀態和異常

環境:SpringBoot2.7.16FS328資訊網——每日最新資訊28at.com

1. 簡介

默認情況下,Spring Boot提供了一個/error映射,以合理的方式處理所有錯誤,并且它在servlet容器中注冊為“全局”錯誤頁面。對于機器客戶端,它會生成一個JSON響應,其中包含錯誤、HTTP狀態和異常消息的詳細信息。對于瀏覽器客戶端,有一個“白標簽”錯誤視圖,它以HTML格式呈現相同的數據(要自定義它,只需要定義一個以error 為beanName的View bean對象)。FS328資訊網——每日最新資訊28at.com

如果需要自定義默認的錯誤處理行為,可以通過設置server.error相應屬性。FS328資訊網——每日最新資訊28at.com

要完全替換默認行為,可以實現ErrorController并注冊為Bean,或者添加ErrorAttributes類型的bean。FS328資訊網——每日最新資訊28at.com

BasicErrorController可以用作自定義ErrorController的基類。如果想為新的內容類型添加處理程序,這一點尤其有用(默認情況是專門處理text/html,并為其他所有內容提供后備)。要做到這一點,請擴展BasicErrorController,添加一個帶有具有products屬性的@RequestMapping的公共方法,并創建一個新類型的bean。FS328資訊網——每日最新資訊28at.com

從Spring Framework 6.0開始,支持RFC 7807 Problem Details。Spring MVC可以使用application/pproblem+json媒體類型生成自定義錯誤消息,如:FS328資訊網——每日最新資訊28at.com

{  "type": "http://www.pack.com/users/666",  "title": "Unknown project",  "status": 404,  "detail": "xxxxx",  "instance": "/users/666"}

可以通過將spring.mvc.problemdetails.enabled設置為true來啟用此支持。FS328資訊網——每日最新資訊28at.com

還可以定義一個用@ControllerAdvice注釋的類,以自定義JSON格式輸出,如以下示例所示:FS328資訊網——每日最新資訊28at.com

@RestControllerAdvice(basePackageClasses = SomeController.class)public class MyControllerAdvice extends ResponseEntityExceptionHandler {  @ExceptionHandler(Exception.class)  public ResponseEntity<?> handleControllerException(HttpServletRequest request, Throwable ex) {    HttpStatus status = getStatus(request);    return new ResponseEntity<>(new MyErrorBody(status.value(), ex.getMessage()), status);  }  private HttpStatus getStatus(HttpServletRequest request) {    Integer code = (Integer) request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);    HttpStatus status = HttpStatus.resolve(code);    return (status != null) ? status : HttpStatus.INTERNAL_SERVER_ERROR;  }}

2. 自定義錯誤頁

如果要顯示給定狀態代碼的自定義HTML錯誤頁面,可以將文件添加到/error目錄中。錯誤頁面可以是靜態HTML(即添加到任何靜態資源目錄下),也可以使用模板構建。文件的名稱應該是確切的狀態代碼或序列掩碼。FS328資訊網——每日最新資訊28at.com

例如,要將404映射到靜態HTML文件,目錄結構如下:FS328資訊網——每日最新資訊28at.com

src/ +- main/     +- java/     |   + <source code>     +- resources/         +- public/             +- error/             |   +- 404.html             +- <other public assets>

要使用FreeMarker模板映射所有5xx錯誤,目錄結構如下:FS328資訊網——每日最新資訊28at.com

src/ +- main/     +- java/     |   + <source code>     +- resources/         +- templates/             +- error/             |   +- 5xx.ftlh             +- <other templates>

對于更復雜的映射,還可以添加實現ErrorViewResolver接口的bean,如以下示例所示:FS328資訊網——每日最新資訊28at.com

@Componentpublic class PackErrorViewResolver implements ErrorViewResolver {  @Override  public ModelAndView resolveErrorView(HttpServletRequest request, HttpStatus status, Map<String, Object> model) {    if (status == HttpStatus.INTERNAL_SERVER_ERROR) {      return new ModelAndView("error") ;    }    return null ;  }}

3. 向容器注冊錯誤頁

對于不使用Spring MVC的應用程序,可以使用ErrorPageRegistrar接口直接注冊ErrorPages。這種抽象直接與底層嵌入式Servlet容器一起工作,即使沒有Spring MVC DispatcherServlet也能工作。FS328資訊網——每日最新資訊28at.com

@Configurationpublic class PackErrorPagesConfiguration {  @Bean  public ErrorPageRegistrar errorPageRegistrar() {    return this::registerErrorPages;  }  private void registerErrorPages(ErrorPageRegistry registry) {    registry.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400"));  }}

4. 默認錯誤頁注冊原理

這里以Tomcat為例,SpringBoot內嵌tomcat容器會自動注冊TomcatServletWebServerFactory該類進行Tomcat容器的配置,這其中就包括將錯誤頁注冊到tomcat中。并且該類實現了ErrorPageRegistry接口,該類專門用來注冊錯誤頁。FS328資訊網——每日最新資訊28at.com

public class TomcatServletWebServerFactory {  public WebServer getWebServer(...) {    Tomcat tomcat = new Tomcat();    // ...    prepareContext(...);  }  protected void prepareContext(...) {    // ...    configureContext(...)  }  protected void configureContext(...) {    // ...    // 獲取容器中定義的所有ErrorPage錯誤頁    for (ErrorPage errorPage : getErrorPages()) {      org.apache.tomcat.util.descriptor.web.ErrorPage tomcatErrorPage = new org.apache.tomcat.util.descriptor.web.ErrorPage();      tomcatErrorPage.setLocation(errorPage.getPath());      tomcatErrorPage.setErrorCode(errorPage.getStatusCode());      tomcatErrorPage.setExceptionType(errorPage.getExceptionName());      context.addErrorPage(tomcatErrorPage);    }  }}

這些ErrorPage通過如下方式被添加到上面的TomcatServletWebServerFactory中FS328資訊網——每日最新資訊28at.com

SpringBoot會注冊一個ErrorPageRegistrarBeanPostProcessor處理器FS328資訊網——每日最新資訊28at.com

public class ErrorPageRegistrarBeanPostProcessor implements BeanPostProcessor, BeanFactoryAware {  public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {    // 上面說了TomcatServletWebServerFactory實現了ErrorPageRegistry接口    if (bean instanceof ErrorPageRegistry) {      postProcessBeforeInitialization((ErrorPageRegistry) bean);    }    return bean;  }  private void postProcessBeforeInitialization(ErrorPageRegistry registry) {    for (ErrorPageRegistrar registrar : getRegistrars()) {      registrar.registerErrorPages(registry);    }  }  private Collection<ErrorPageRegistrar> getRegistrars() {    if (this.registrars == null) {      // 獲取容器中的所有ErrorPageRegistrar      this.registrars = new ArrayList<>(          this.beanFactory.getBeansOfType(ErrorPageRegistrar.class, false, false).values());      this.registrars.sort(AnnotationAwareOrderComparator.INSTANCE);      this.registrars = Collections.unmodifiableList(this.registrars);    }    return this.registrars;  }}

注意:自定義ErrorPageRegistrar時,我們可以通過實現Ordered接口控制優先級FS328資訊網——每日最新資訊28at.com

以上是本篇文章的全部內容,希望對你有幫助。FS328資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-79606-0.html詳解SpringBoot錯誤處理

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: React為什么要廢棄ComponentWillMount、ReceiveProps和Update這三個生命周期

下一篇: Figma 在協同編輯中使用的順序一致性算法: Fractional indexing

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久久噜噜噜久久人人看| 在线观看福利一区| 欧美日韩高清不卡| 欧美四级电影网站| 国产亚洲激情| 在线免费精品视频| 中国亚洲黄色| 久久久精品动漫| 欧美久久精品午夜青青大伊人| 欧美伦理a级免费电影| 国产精品美女一区二区在线观看| 国产综合一区二区| 亚洲精品在线视频| 欧美一区亚洲| 欧美激情第10页| 国产精品日韩精品欧美在线| 影音先锋久久精品| 一区二区三区免费在线观看| 久久福利毛片| 欧美日韩1区| 国产综合视频在线观看| 日韩一区二区精品在线观看| 欧美一区二区在线视频| 欧美韩日一区二区| 国产一区二区欧美| 一区二区三区导航| 美女视频黄 久久| 国产精品毛片在线| 亚洲国产成人久久综合| 午夜精品电影| 欧美精品一区二区三区视频| 国产一区二区毛片| 在线综合+亚洲+欧美中文字幕| 久久亚洲视频| 国产精品一区视频| 99在线|亚洲一区二区| 久久精品盗摄| 国产精品极品美女粉嫩高清在线| 亚洲第一毛片| 欧美在线免费视频| 欧美性生交xxxxx久久久| 亚洲国产另类久久久精品极度| 性亚洲最疯狂xxxx高清| 欧美日韩精品一区二区天天拍小说| 黄色另类av| 午夜精品久久久久99热蜜桃导演| 欧美久久久久中文字幕| 在线欧美视频| 久久精品国产欧美亚洲人人爽| 国产精品成人国产乱一区| 亚洲国产精品尤物yw在线观看| 久久大逼视频| 国产精品男女猛烈高潮激情| 日韩写真在线| 欧美a级大片| 一区福利视频| 久久久久欧美精品| 国产日本亚洲高清| 午夜精品视频在线观看一区二区| 欧美日韩一区在线| 亚洲精品无人区| 欧美+日本+国产+在线a∨观看| 国户精品久久久久久久久久久不卡 | 一本色道久久综合亚洲91| 免费成人性网站| 黄色资源网久久资源365| 午夜久久久久| 国产精品视频观看| 亚洲综合精品四区| 国产精品成人午夜| 亚洲视频一区在线| 欧美三级日本三级少妇99| 亚洲美女av电影| 欧美精品18| 日韩视频亚洲视频| 欧美另类99xxxxx| 日韩午夜激情av| 欧美日韩国产限制| 一区二区免费在线观看| 欧美视频一区二区在线观看| 一本久久a久久免费精品不卡| 欧美日韩成人综合在线一区二区| 99国产精品国产精品久久 | 黄色免费成人| 另类人畜视频在线| 亚洲国产美女精品久久久久∴| 免费成人高清在线视频| 亚洲国产裸拍裸体视频在线观看乱了中文 | 美女精品网站| 亚洲电影在线看| 欧美激情1区2区3区| 亚洲乱码一区二区| 欧美丝袜一区二区三区| 亚洲欧美日韩精品久久久| 国产日韩欧美综合精品| 久久精品国产999大香线蕉| 国内精品久久久久久| 毛片基地黄久久久久久天堂| 亚洲片区在线| 国产精品第13页| 欧美一区二区视频在线| 狠狠久久婷婷| 欧美成人性网| 这里只有精品电影| 国产欧美在线看| 久久综合色播五月| 日韩亚洲欧美成人| 国产精品有限公司| 久久一区二区三区国产精品 | 国产精品欧美风情| 久久精品女人| 亚洲狠狠丁香婷婷综合久久久| 欧美区视频在线观看| 亚洲一区二三| 黄色在线一区| 欧美精品日韩一区| 亚洲欧美国产毛片在线| 国模私拍一区二区三区| 欧美福利视频一区| 亚洲永久在线| 在线成人www免费观看视频| 欧美理论在线播放| 欧美一级在线亚洲天堂| 亚洲国产欧美在线| 欧美性一二三区| 久久久91精品国产一区二区三区| 91久久极品少妇xxxxⅹ软件| 欧美午夜久久| 久久米奇亚洲| 亚洲午夜精品视频| 精品动漫一区| 国产精品福利在线观看| 卡一卡二国产精品| 国产精品99久久99久久久二8| 国产在线观看一区| 欧美日韩成人一区二区| 欧美在线观看一二区| 亚洲日韩视频| 国产三级欧美三级日产三级99| 欧美成人精精品一区二区频| 亚洲欧美日韩在线高清直播| 亚洲高清一区二区三区| 国产精品欧美日韩一区二区| 免费欧美高清视频| 午夜精品电影| 99在线观看免费视频精品观看| 国产午夜精品麻豆| 欧美日韩国产成人| 久久频这里精品99香蕉| 亚洲影院色在线观看免费| 亚洲电影av在线| 国产区二精品视| 欧美日韩色综合| 欧美91精品| 久久精品国产清高在天天线| 99re6这里只有精品视频在线观看| 国外成人网址| 国产精品免费在线| 欧美日韩免费高清一区色橹橹| 久久黄色小说| 亚洲综合国产激情另类一区| 亚洲人成网站在线播| 国外成人免费视频| 国产精品影视天天线| 欧美日韩系列| 欧美剧在线观看| 欧美大胆成人| 美玉足脚交一区二区三区图片| 欧美在线黄色| 亚洲欧美清纯在线制服| 99国产精品视频免费观看| 在线免费不卡视频| 国产一区二区在线观看免费| 国产精品人人做人人爽人人添| 欧美日韩精品免费观看视频完整| 麻豆成人综合网| 久久精品亚洲一区二区| 午夜精品在线观看| 亚洲特级毛片| 99国产精品私拍| 亚洲免费观看视频| 亚洲国产一区二区a毛片| 永久91嫩草亚洲精品人人| 国产一区欧美日韩| 国产亚洲精品久久久久动| 国产精品欧美一区喷水| 国产精品免费在线| 国产精品盗摄一区二区三区| 欧美日韩一区在线视频| 欧美人与性禽动交情品| 欧美激情麻豆| 欧美精品情趣视频| 欧美精品福利在线| 欧美日韩大陆在线| 欧美日韩激情小视频| 欧美日韩国产一区二区| 欧美日本国产| 欧美日韩中文在线| 欧美特黄视频| 国产精品高潮呻吟久久av黑人| 欧美午夜精品久久久久免费视| 国产精品国产自产拍高清av王其| 国产精品高潮呻吟视频 | 亚洲精品日韩一|