日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理

瀏覽:138日期:2023-04-25 10:38:02

在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定義@ExceptionHandler、@InitBinder、@ModelAttribute,并應(yīng)用到所有@RequestMapping中。參考:@ControllerAdvice 文檔

一、介紹

創(chuàng)建 MyControllerAdvice,并添加 @ControllerAdvice注解。

package com.sam.demo.controller;import org.springframework.ui.Model;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.*;import java.util.HashMap;import java.util.Map;/** * controller 增強(qiáng)器 * @author sam * @since 2017/7/17 */@ControllerAdvicepublic class MyControllerAdvice { /** * 應(yīng)用到所有@RequestMapping注解方法,在其執(zhí)行之前初始化數(shù)據(jù)綁定器 * @param binder */ @InitBinder public void initBinder(WebDataBinder binder) {} /** * 把值綁定到Model中,使全局@RequestMapping可以獲取到該值 * @param model */ @ModelAttribute public void addAttributes(Model model) { model.addAttribute('author', 'Magical Sam'); } /** * 全局異常捕捉處理 * @param ex * @return */ @ResponseBody @ExceptionHandler(value = Exception.class) public Map errorHandler(Exception ex) { Map map = new HashMap(); map.put('code', 100); map.put('msg', ex.getMessage()); return map; }}

啟動(dòng)應(yīng)用后,被 @ExceptionHandler、@InitBinder、@ModelAttribute 注解的方法,都會(huì)作用在 被 @RequestMapping 注解的方法上。

@ModelAttribute:在Model上設(shè)置的值,對(duì)于所有被 @RequestMapping 注解的方法中,都可以通過(guò) ModelMap 獲取,如下:

@RequestMapping('/home')public String home(ModelMap modelMap) { System.out.println(modelMap.get('author'));}//或者 通過(guò)@ModelAttribute獲取@RequestMapping('/home')public String home(@ModelAttribute('author') String author) { System.out.println(author);}

@ExceptionHandler 攔截了異常,我們可以通過(guò)該注解實(shí)現(xiàn)自定義異常處理。其中,@ExceptionHandler 配置的 value 指定需要攔截的異常類型,上面攔截了 Exception.class 這種異常。

二、自定義異常處理(全局異常處理)

spring boot 默認(rèn)情況下會(huì)映射到 /error 進(jìn)行異常處理,但是提示并不十分友好,下面自定義異常處理,提供友好展示。

1、編寫(xiě)自定義異常類:

package com.sam.demo.custom;/** * @author sam * @since 2017/7/17 */public class MyException extends RuntimeException { public MyException(String code, String msg) { this.code = code; this.msg = msg; } private String code; private String msg; // getter & setter}

注:spring 對(duì)于 RuntimeException 異常才會(huì)進(jìn)行事務(wù)回滾。

2、編寫(xiě)全局異常處理類

創(chuàng)建 MyControllerAdvice.java,如下:

package com.sam.demo.controller;import org.springframework.ui.Model;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.*;import java.util.HashMap;import java.util.Map;/** * controller 增強(qiáng)器 * * @author sam * @since 2017/7/17 */@ControllerAdvicepublic class MyControllerAdvice { /** * 全局異常捕捉處理 * @param ex * @return */ @ResponseBody @ExceptionHandler(value = Exception.class) public Map errorHandler(Exception ex) { Map map = new HashMap(); map.put('code', 100); map.put('msg', ex.getMessage()); return map; } /** * 攔截捕捉自定義異常 MyException.class * @param ex * @return */ @ResponseBody @ExceptionHandler(value = MyException.class) public Map myErrorHandler(MyException ex) { Map map = new HashMap(); map.put('code', ex.getCode()); map.put('msg', ex.getMsg()); return map; }}

3、controller中拋出異常進(jìn)行測(cè)試。

@RequestMapping('/home')public String home() throws Exception {// throw new Exception('Sam 錯(cuò)誤'); throw new MyException('101', 'Sam 錯(cuò)誤');}

啟動(dòng)應(yīng)用,訪問(wèn):http://localhost:8080/home ,正常顯示以下json內(nèi)容,證明自定義異常已經(jīng)成功被攔截。

{'msg':'Sam 錯(cuò)誤','code':'101'}

* 如果不需要返回json數(shù)據(jù),而要渲染某個(gè)頁(yè)面模板返回給瀏覽器,那么MyControllerAdvice中可以這么實(shí)現(xiàn):

@ExceptionHandler(value = MyException.class)public ModelAndView myErrorHandler(MyException ex) { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName('error'); modelAndView.addObject('code', ex.getCode()); modelAndView.addObject('msg', ex.getMsg()); return modelAndView;}

在 templates 目錄下,添加 error.ftl(這里使用freemarker) 進(jìn)行渲染:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>錯(cuò)誤頁(yè)面</title></head><body> <h1>$[code]</h1> <h1>${msg}</h1></body></html>

重啟應(yīng)用,http://localhost:8080/home 顯示自定的錯(cuò)誤頁(yè)面內(nèi)容。

補(bǔ)充:如果全部異常處理返回json,那么可以使用 @RestControllerAdvice 代替 @ControllerAdvice ,這樣在方法上就可以不需要添加 @ResponseBody。

到此這篇關(guān)于SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理的文章就介紹到這了,更多相關(guān)SpringBoot @ControllerAdvice 攔截異常內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产乱人伦精品一区| 综合色就爱涩涩涩综合婷婷| 日本一区二区中文字幕| 视频一区在线播放| 亚洲精品人人| 午夜久久av | 国产91欧美| 国产精品手机在线播放| 久久国产三级精品| 精品视频99| 蜜桃精品在线| 99精品网站| 国产美女一区| 日韩精品中文字幕一区二区| 欧美日本久久| 你懂的国产精品| 日韩一区自拍| 影音国产精品| 中文字幕日韩高清在线| 欧美亚洲人成在线| 欧美精品第一区| 中文一区一区三区高中清不卡免费| 国产69精品久久| 国产一区久久| 亚洲人成网站在线在线观看| 国产精品调教| 丝袜美腿诱惑一区二区三区| 99riav国产精品| 欧美偷窥清纯综合图区| 国产一区福利| 91久久中文| 国产欧美三级| 日本韩国欧美超级黄在线观看| 亚洲激情黄色| 国产精品成人一区二区网站软件| 国产a久久精品一区二区三区| 欧美日韩第一| 久久精品72免费观看| 黄色精品视频| 五月天综合网站| 日本麻豆一区二区三区视频| 久草精品视频| 亚洲在线网站| 老鸭窝一区二区久久精品| 欧美日韩在线二区| 欧美啪啪一区| 久久国产日本精品| 日本午夜精品一区二区三区电影| 亚洲一区二区日韩| 国产在线不卡一区二区三区 | 国产婷婷精品| 麻豆成人91精品二区三区| 999视频精品| 亚欧洲精品视频在线观看| 精品亚洲精品| 久久香蕉精品| 亚洲欧洲高清| 日韩高清国产一区在线| 日本在线精品| 国产麻豆一区二区三区 | 日韩1区2区| 亚洲少妇在线| 精品视频久久| 香蕉久久久久久| 久久久久蜜桃| 欧美精品成人| 久热re这里精品视频在线6| 福利在线一区| 婷婷综合电影| 久久久久国产| 国产精品观看| 免费久久99精品国产自在现线| 久久久久九九精品影院| 亚洲在线国产日韩欧美| 精品福利久久久| 亚洲精品日韩久久| www.51av欧美视频| 欧美日韩一区二区三区四区在线观看 | 欧美天堂一区二区| 亚洲欧美日韩国产一区| 麻豆一区二区三| 免费一区二区视频| 亚洲精品福利电影| 国产激情一区| 亚洲一区二区免费在线观看| 精品久久免费| 亚洲18在线| 激情五月综合网| 在线看片福利| 国产精品国码视频| 日本不卡高清| 免费国产自线拍一欧美视频| 欧美日韩精品免费观看视欧美高清免费大片 | 日韩av不卡一区二区| 欧美日韩国产一区二区三区不卡 | 欧美片网站免费| 蜜臀av国产精品久久久久| 精品久久在线| 开心激情综合| 国产视频一区二| 亚洲精品少妇| 亚洲午夜国产成人| 亚洲一区二区三区四区五区午夜| 99久久99久久精品国产片果冰| 免费日韩成人| 国产精品天堂蜜av在线播放| 亚洲字幕久久| 好吊日精品视频| 午夜精品久久久久久久久久蜜桃| 久草精品视频| 黄色网一区二区| 成人在线超碰| 国产日韩在线观看视频| 亚洲精品极品| 中文在线日韩| 日韩精品免费一区二区夜夜嗨 | 午夜在线观看免费一区| 色婷婷狠狠五月综合天色拍| 丁香婷婷久久| 日韩av免费大片| 91嫩草亚洲精品| 激情黄产视频在线免费观看| 色爱综合网欧美| jizzjizz中国精品麻豆| 黑森林国产精品av| 九九精品调教| 久久中文亚洲字幕| 影音国产精品| 日韩中文字幕| 国产欧美自拍| 国产成人精品一区二区三区视频| 国产一区二区三区四区二区| 岛国精品一区| 97精品中文字幕| 久久久噜噜噜| 亚洲精品1区| 日韩高清电影免费| 久久精品国产久精国产| 国产精品99一区二区三区| av高清不卡| 91久久久精品国产| 亚洲一区二区三区无吗| 日本亚州欧洲精品不卡| 奇米狠狠一区二区三区| 国产极品一区| 麻豆视频在线看| 色婷婷精品视频| 欧美精品一卡| 水蜜桃久久夜色精品一区的特点| 亚洲精品一级| 欧美成人精品午夜一区二区| 久久久久久久欧美精品| 亚洲一区二区av| 国产毛片一区二区三区 | 日韩精品首页| 亚洲欧美成人综合| 久久国产欧美日韩精品| 久久精品国产亚洲一区二区三区| 综合日韩av| 日韩亚洲精品在线| 日本aⅴ亚洲精品中文乱码| 嫩呦国产一区二区三区av| 成人免费网站www网站高清| 久久高清免费观看| 国产精品一区亚洲| 婷婷综合六月| 石原莉奈在线亚洲三区| 91亚洲精品视频在线观看| 成人午夜亚洲| 欧美中文字幕| 久久不见久久见免费视频7| 波多视频一区| 首页国产欧美久久| 欧美精品91| 婷婷久久一区| 日韩精品午夜视频| 播放一区二区| 97成人在线| 精精国产xxxx视频在线野外| 免费视频最近日韩| 国产精品成人a在线观看| 最新日韩av| 嫩呦国产一区二区三区av| 午夜精品网站| 美女久久99| 三级欧美在线一区| 国产一区二区三区不卡视频网站 | 99国产精品免费视频观看| 日韩一区免费| 久久国产电影| 国产精品久久久久久久久久齐齐 | 婷婷亚洲成人| 欧美一区二区三区激情视频 | 综合欧美精品| 日韩精品1区| 青青草伊人久久| 香蕉久久精品| 美女在线视频一区| 蜜桃av一区二区三区电影| 国产一区导航|