91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot中如何實現全局異常與數據校驗

發布時間:2021-08-10 16:24:45 來源:億速云 閱讀:190 作者:Leah 欄目:編程語言

SpringBoot中如何實現全局異常與數據校驗,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

項目建立

利用idea 工具,很容易的搭建一個SpringBoot項目,要引入的maven依賴如下:

<dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-validation</artifactId>  </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-web</artifactId>  </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-test</artifactId>   <scope>test</scope>  </dependency>

很簡單,除了加入web功能還加入了我們需要用到的JSR-303校驗框架。

定義成功失敗 返回碼

public class Code {   /**   * 成功   */   public static int SUCCESSED = 1;   /**   * 失敗   */   public static int FAILED = -1;  }

定義接口返回響應實體

public class Response<T> implements Serializable{   /**   *    */   private static final long serialVersionUID = 4250719891313555820L;   /**   * 返回結果集   */   private T result;   /**   * 返回消息   */   private String msg;   /**   * 響應碼   */   private Integer code;   //set get 略  }

全局異常攔截和驗證

定義自定義業務異常

public class MyException extends RuntimeException {   private static final long serialVersionUID = -5875371379845226068L;   public MyException(){}   public MyException(String msg){   this.msg = msg ;   }   /**   * 異常信息   */   private String msg ;   /**   * 具體異常碼   */   private int code = Code.FAILED;   get set 略

編寫全局異常控制器并對自定義異常做處理

@ControllerAdvice  public class GlobalExceptionHandler {   private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);  @ExceptionHandler(value = MyException.class)  @ResponseBody  public Response<String> myExceptionErrorHandler(MyException ex) throws Exception {   logger.error("myExceptionErrorHandler info:{}",ex.getMessage());   Response<String> r = new Response<>();   r.setMsg(ex.getMsg());   r.setCode(ex.getCode());   return r;  }

編寫controller模擬拋出業務異常

@RestController  @RequestMapping("/user")  public class UserController {  @PostMapping(value = "/update")  Response<Boolean> update(User user){   //todo 此處為模擬異常拋出   if(true){   throw new MyException("更新失敗");   }   //todo 此處為模擬返回   Response<Boolean> response = new Response<>();   response.setCode(Code.SUCCESSED);   response.setResult(true);   return response;  }  }

postMan模擬請求接口,進行驗證

SpringBoot中如何實現全局異常與數據校驗

數據綁定異常處理

通常我們操作數據的時候,不僅前端需要進行數據校驗,后端也應當進行攔截和進行相應的錯誤提示,JSR-303校驗框架也是我們的一種選擇。

編寫實體`User`,并對屬性進行注解控制

public class User {   @NotNull(message = "用戶名不能為空")   private String userName;   private int age;   //...

全局異常控制類加入攔截

@ControllerAdvice  public class GlobalExceptionHandler {   private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);   @ExceptionHandler(value = BindException.class)   @ResponseBody   public Response<String> bindExceptionErrorHandler(BindException ex) throws Exception {   logger.error("bindExceptionErrorHandler info:{}",ex.getMessage());   Response<String> r = new Response<>();   StringBuilder sb = new StringBuilder();   FieldError fieldError = ex.getFieldError();   sb.append(fieldError.getDefaultMessage());   r.setMsg(sb.toString());   r.setCode(Code.FAILED);   return r;   }   //...

編寫控制器

@RestController  @RequestMapping("/user")  public class UserController {   @PostMapping(value = "/add")   Response<User> add(@Validated User user){   //todo 此處為模擬返回   Response<User> response = new Response<>();   response.setCode(Code.SUCCESSED);   response.setResult(new User());   return response;   }   //...

postMan模擬請求

不填寫任何屬性,模擬添加操作,準確進行攔截和報錯

SpringBoot中如何實現全局異常與數據校驗

項目結構預覽:

SpringBoot中如何實現全局異常與數據校驗

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉林市| 大名县| 南和县| 荣昌县| 湘潭市| 开封市| 铁岭县| 托克逊县| 永州市| 佳木斯市| 平山县| 炎陵县| 寻甸| 额尔古纳市| 广河县| 武城县| 巴马| 磐石市| 南乐县| 鹤庆县| 马公市| 张北县| 苏州市| 武宁县| 麻城市| 濮阳市| 新密市| 平原县| 建湖县| 牡丹江市| 土默特右旗| 湖州市| 巴林左旗| 江华| 永州市| 北安市| 探索| 盐亭县| 集贤县| 阿瓦提县| 镇安县|