Spring中的@RestControllerAdvice注解使用方法解析
更新時間:2024年01月19日 08:52:34 作者:珠光
這篇文章主要介紹了Spring中的@RestControllerAdvice注解使用方法解析,@RestControllerAdvice是Controller的增強 常用于全局異常的捕獲處理 和請求參數的增強,需要的朋友可以參考下
@RestControllerAdvice注解使用
@RestControllerAdvice是Controller的增強 常用于全局異常的捕獲處理 和請求參數的增強
繼承@ControllerAdvice、@ResponseBody等注解 它返回的數據是JSON格式的。
異常案例
@RestControllerAdvice @Slf4j public class ControllerExceptionHandleAdvice { @ExceptionHandler public R handler(HttpServletRequest req, HttpServletResponse res, Exception e) { if (e instanceof NullPointerException) { log.error("請求的方法名為:{},發(fā)生空指針異常:{}", req.getRequestURI(), ExceptionUtils.getStackTrace(e)); return R.fail("執(zhí)行異常"); } else if (e instanceof DataIntegrityViolationException) { String stackTrace = ExceptionUtils.getStackTrace(e); log.error("請求的方法名為:{},數據庫訪問異常:{}", req.getRequestURI(), stackTrace); if (stackTrace.contains("唯一性約束")) { return R.fail("數據不能重復!"); } else if (stackTrace.contains("非空約束")) { return R.fail("必填項不能空!"); } else { return R.fail("數據庫異常"); } } else if (e instanceof SQLException) { log.error("請求的方法名為:{},數據庫訪問異常:{}", req.getRequestURI(), ExceptionUtils.getStackTrace(e)); return R.fail("數據庫訪問執(zhí)行異常"); } else { log.error("請求的方法名為:{},服務器代碼發(fā)生異常,請聯系管理員:{}", req.getRequestURI(), ExceptionUtils.getStackTrace(e)); return R.fail("服務器代碼發(fā)生異常,請聯系管理員"); } } }
請求參數案例
@Slf4j @RestControllerAdvice public class MyHandler { /** * 應用到所有@RequestMapping注解方法,在其執(zhí)行之前初始化數據綁定器 * * @param binder */ @InitBinder public void initBinder(WebDataBinder binder) { log.info("初始化數據綁定器"); log.info(binder.getFieldDefaultPrefix()); log.info(binder.getFieldMarkerPrefix()); } /** * 把值綁定到Model中,使全局@RequestMapping可以獲取到該值 * @param model */ @ModelAttribute public void addAttributes(Model model) { log.info("添加name參數"); model.addAttribute("name", "allen"); } }
到此這篇關于Spring中的@RestControllerAdvice注解使用方法解析的文章就介紹到這了,更多相關@RestControllerAdvice注解使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java中Statement 與 PreparedStatement接口之間的關系和區(qū)別
這篇文章主要介紹了java中Statement 與 PreparedStatement接口之間的關系和區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07