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

您的位置:首頁技術文章
文章詳情頁

SpringBoot @ControllerAdvice 攔截異常并統一處理

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

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

一、介紹

創建 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 增強器 * @author sam * @since 2017/7/17 */@ControllerAdvicepublic class MyControllerAdvice { /** * 應用到所有@RequestMapping注解方法,在其執行之前初始化數據綁定器 * @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; }}

啟動應用后,被 @ExceptionHandler、@InitBinder、@ModelAttribute 注解的方法,都會作用在 被 @RequestMapping 注解的方法上。

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

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

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

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

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

1、編寫自定義異常類:

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 對于 RuntimeException 異常才會進行事務回滾。

2、編寫全局異常處理類

創建 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 增強器 * * @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中拋出異常進行測試。

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

啟動應用,訪問:http://localhost:8080/home ,正常顯示以下json內容,證明自定義異常已經成功被攔截。

{'msg':'Sam 錯誤','code':'101'}

* 如果不需要返回json數據,而要渲染某個頁面模板返回給瀏覽器,那么MyControllerAdvice中可以這么實現:

@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) 進行渲染:

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

重啟應用,http://localhost:8080/home 顯示自定的錯誤頁面內容。

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

到此這篇關于SpringBoot @ControllerAdvice 攔截異常并統一處理的文章就介紹到這了,更多相關SpringBoot @ControllerAdvice 攔截異常內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品99久久久| 欧美精品福利| 国产精品日本| 欧美va天堂| 精品久久在线| 日韩av资源网| 日韩精品一卡二卡三卡四卡无卡| 麻豆91在线播放| 在线精品国产亚洲| 成人黄色av| 日韩精品高清不卡| 欧美日韩国产在线一区| 日韩不卡手机在线v区| 亚洲v在线看| 日韩免费精品| 日韩免费视频| 国产精品一区毛片| 一区三区视频| 美女视频黄久久| 中文字幕日韩高清在线| 亚洲精品国产嫩草在线观看| 日本aⅴ精品一区二区三区| 精品一区二区三区四区五区| 国产精品天天看天天狠| 国产精品xxx在线观看| 国产乱码精品一区二区亚洲| 亚洲综合图色| 欧美精品福利| 国产精品巨作av| 国产美女精品视频免费播放软件| 美女网站一区| 欧美日韩激情在线一区二区三区| 久久精品伊人| 欧美91在线|欧美| 亚洲男女av一区二区| 免费国产亚洲视频| 欧美国产另类| av高清不卡| 一本大道色婷婷在线| 国产精品福利在线观看播放| 日韩免费在线| 精品捆绑调教一区二区三区| 99久久婷婷| 日本久久成人网| 日韩高清欧美激情| 日本午夜精品久久久| 精品久久97| 亚洲二区在线| 日韩高清在线不卡| 欧美国产三级| bbw在线视频| 欧美一区=区三区| 1024精品一区二区三区| 国产极品模特精品一二| 91一区二区三区四区| 国产一区导航| 精品视频自拍| 亚洲免费激情| 国产精品亚洲成在人线| 久久久蜜桃一区二区人| 91国语精品自产拍| 亚洲三级精品| 久久精品亚洲欧美日韩精品中文字幕| 日韩精品一卡二卡三卡四卡无卡| 久久国产中文字幕| 日本综合视频| 欧美日韩四区| 久久久久久久欧美精品| 久久久久国产| 色网在线免费观看| 日韩国产欧美在线视频| 国产成人精品一区二区三区免费| 蜜臀精品久久久久久蜜臀| 精品国产鲁一鲁****| 天堂av在线一区| 午夜在线精品偷拍| 久久久夜夜夜| 色爱综合网欧美| 国产精品一区二区三区www| 亚洲婷婷在线| 欧美一区激情| 日韩专区视频网站| 久久久久久色| 日韩精品一卡| 99久久久久| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 国产高清久久| 福利一区二区三区视频在线观看| 亚洲影视一区| 美女av在线免费看| 亚洲aa在线| 日本不卡在线视频| 91精品福利观看| 亚洲啊v在线免费视频| 喷白浆一区二区| 欧美亚洲国产精品久久| 深夜福利一区| 久久a爱视频| 日韩av首页| 亚洲一区黄色| 欧美在线影院| 亚洲综合日韩| 天堂俺去俺来也www久久婷婷| 欧美国产偷国产精品三区| 国产成人精品免费视| 色婷婷精品视频| 国产精品婷婷| 爽爽淫人综合网网站| 亚洲a在线视频| 91精品国产自产在线丝袜啪| 成人午夜亚洲| 五月激情久久| 美女久久一区| 国产美女撒尿一区二区| 日本午夜精品久久久| 国产精品久久久久毛片大屁完整版| 国产福利资源一区| 婷婷亚洲五月色综合| 伊人久久亚洲影院| 亚洲在线网站| 综合激情婷婷| www.com.cn成人| av在线最新| 7777精品| 久久精品青草| 日本亚洲视频| 亚洲精品动态| 国产欧美三级| 久久国产精品色av免费看| 婷婷精品视频| 一级欧美视频| 国产一区二区三区四区大秀| 欧美日韩水蜜桃| 精品美女视频 | 亚洲一级网站| 久久美女性网| 91精品推荐| 亚洲高清av| 日韩视频一区| 丝袜美腿亚洲一区二区图片| 成人av二区| 亚洲网址在线观看| 欧美日韩精品一区二区三区视频 | 欧美三级网址| 亚欧成人精品| 精品一区三区| 激情综合网站| 不卡福利视频| 日本欧美在线看| 五月天久久777| 亚洲爱爱视频| 九九综合在线| 国产精品99视频| 日本三级亚洲精品| 欧美亚洲国产一区| 国产乱码精品一区二区亚洲| 性欧美xxxx免费岛国不卡电影| 久久精品亚洲欧美日韩精品中文字幕| 日韩黄色大片网站| 免费人成网站在线观看欧美高清| 精品视频在线观看网站| 日本久久一区| 美女久久久久久 | 日韩中文首页| 99久精品视频在线观看视频| 久久精品高清| 久久精品人人| 国产亚洲电影| 欧美精品资源| 日韩一区欧美| 久久婷婷丁香| 欧美成a人免费观看久久| 国产精品白浆| 日本欧美久久久久免费播放网| 久久精品五月| 久久免费国产| 都市激情国产精品| 国产成人久久精品一区二区三区| 色偷偷色偷偷色偷偷在线视频| 蜜桃传媒麻豆第一区在线观看| 中文在线资源| 亚洲黄色免费看| 91成人网在线观看| 国产精品免费不| 美女久久久久| 国产视频一区在线观看一区免费| 亚洲精选久久| 亚洲黄色中文字幕| 日本少妇一区| 亚洲精品激情| 日韩国产一区二区三区| 日本在线观看不卡视频| 久久国产日本精品| 免费观看日韩电影| 久久久久国产一区二区| 日本中文字幕不卡| 麻豆中文一区二区| 中文日韩欧美| 在线日韩中文| 日本在线精品|