日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

spring框架做全局异常捕获_@ControllerAdvice注解(全局异常捕获)

發(fā)布時(shí)間:2024/7/23 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring框架做全局异常捕获_@ControllerAdvice注解(全局异常捕获) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景

@ControllerAdvice 注解 通常用于定義@ExceptionHandler, @InitBinder和@ModelAttribute 適用于所有@RequestMapping方法的方法。

@ExceptionHandler異常處理器

作用:可以攔截程序拋出來(lái)的指定異常。使用場(chǎng)景:主要使用與項(xiàng)目統(tǒng)一異常處理,對(duì)于rest風(fēng)格的返回統(tǒng)一異常格式。

/** * 指定攔截異常的類型 * * @param e * @return json格式類型 */@ExceptionHandler({Exception.class}) //指定攔截異常的類型 @ResponseBody public Object customExceptionHandler(Exception e) { //打印異常日志 e.printStackTrace(); //非空驗(yàn)證異常 if(e instanceof BindException){ BindException bindException = (BindException) e; String msg = bindException.getBindingResult().getFieldError().getDefaultMessage(); return msg; } if(e instanceof GlobalException){ GlobalException globalException = (GlobalException) e; return globalException.getErrMsg(); } return "系統(tǒng)異常"; }

@InitBinder

作用:
應(yīng)用到所有@RequestMapping注解方法,在其執(zhí)行之前初始化數(shù)據(jù)綁定器
使用場(chǎng)景:
1.可用于綁定作用于全局的請(qǐng)求參數(shù)驗(yàn)證器。
2.日期格式把請(qǐng)求中的日期字符串轉(zhuǎn)換成Date類型。

/** * 應(yīng)用到所有@RequestMapping注解方法,在其執(zhí)行之前初始化數(shù)據(jù)綁定器 * * @param binder

自定義參數(shù)驗(yàn)證器使用傳送門:SpringBoot自定義參數(shù)驗(yàn)證器

@ModelAttribute

作用:把值綁定到Model中,使全局@RequestMapping可以獲取到該值

使用場(chǎng)景:大家發(fā)揮自己那聰明的小腦袋吧,本人也沒(méi)想到哪里實(shí)戰(zhàn)使用!

/** * 把值綁定到Model中,使全局@RequestMapping可以獲取到該值 * * @param model */ @ModelAttribute public void addAttribute(Model model) { model.addAttribute("msg", "hello"); }

獲取參數(shù):

@GetMapping("test") @ResponseBody public Object test(@ModelAttribute("msg") String msg){ return msg; }

完整的代碼

package com.wzq.config.exception;import org.springframework.ui.Model;import org.springframework.validation.BindException;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.*;/** * @description: 全局異常處理類 * @author: Wzq * @create: 2019-12-26 11:01 */@RestControllerAdvicepublic class GlobalExceptionAdvice { /** * 指定攔截異常的類型 * * @param e * @return json格式類型 */ @ExceptionHandler({Exception.class}) //指定攔截異常的類型 @ResponseBody public Object customExceptionHandler(Exception e) { //打印異常日志 e.printStackTrace(); //非空驗(yàn)證異常 if(e instanceof BindException){ BindException bindException = (BindException) e; String msg = bindException.getBindingResult().getFieldError().getDefaultMessage(); return msg; } if(e instanceof GlobalException){ GlobalException globalException = (GlobalException) e; return globalException.getErrMsg(); } return "系統(tǒng)異常"; } /** * 應(yīng)用到所有@RequestMapping注解方法,在其執(zhí)行之前初始化數(shù)據(jù)綁定器 * * @param binder */ @InitBinder public void initWebBinder(WebDataBinder binder) { //對(duì)日期的統(tǒng)一處理// binder.addCustomFormatter(new DateFormatter("yyyy-MM-dd")); //添加對(duì)數(shù)據(jù)的校驗(yàn) //binder.setValidator(); } /** * 把值綁定到Model中,使全局@RequestMapping可以獲取到該值 * * @param model */ @ModelAttribute public void addAttribute(Model model) { model.addAttribute("msg", "hello"); }}

@RestControllerAdvice 和 @ControllerAdvice區(qū)別在于@RestControllerAdvice不需要加@ResponseBody

轉(zhuǎn)載自GoslingWu,未經(jīng)許可,嚴(yán)禁抄襲

更多相關(guān)內(nèi)容,Java&python,軟件開(kāi)發(fā)等學(xué)習(xí)資料,電子書及視頻還有高級(jí)講師免費(fèi)課程,

需要的可以私聊小編發(fā)送【學(xué)習(xí)】二字

總結(jié)

以上是生活随笔為你收集整理的spring框架做全局异常捕获_@ControllerAdvice注解(全局异常捕获)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。