真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

SpringBoot中如何實(shí)現(xiàn)全局異常與數(shù)據(jù)校驗(yàn)

SpringBoot中如何實(shí)現(xiàn)全局異常與數(shù)據(jù)校驗(yàn),很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),冷水江網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:冷水江等地區(qū)。冷水江做網(wǎng)站價(jià)格咨詢:18982081108

項(xiàng)目建立

利用idea 工具,很容易的搭建一個(gè)SpringBoot項(xiàng)目,要引入的maven依賴如下:

   org.springframework.boot   spring-boot-starter-validation       org.springframework.boot   spring-boot-starter-web       org.springframework.boot   spring-boot-starter-test   test  

很簡(jiǎn)單,除了加入web功能還加入了我們需要用到的JSR-303校驗(yàn)框架。

定義成功失敗 返回碼

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

定義接口返回響應(yīng)實(shí)體

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

全局異常攔截和驗(yàn)證

定義自定義業(yè)務(wù)異常

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 略

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

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

編寫controller模擬拋出業(yè)務(wù)異常

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

postMan模擬請(qǐng)求接口,進(jìn)行驗(yàn)證

SpringBoot中如何實(shí)現(xiàn)全局異常與數(shù)據(jù)校驗(yàn)

數(shù)據(jù)綁定異常處理

通常我們操作數(shù)據(jù)的時(shí)候,不僅前端需要進(jìn)行數(shù)據(jù)校驗(yàn),后端也應(yīng)當(dāng)進(jìn)行攔截和進(jìn)行相應(yīng)的錯(cuò)誤提示,JSR-303校驗(yàn)框架也是我們的一種選擇。

編寫實(shí)體`User`,并對(duì)屬性進(jìn)行注解控制

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

全局異??刂祁惣尤霐r截

@ControllerAdvice  public class GlobalExceptionHandler {   private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);   @ExceptionHandler(value = BindException.class)   @ResponseBody   public Response bindExceptionErrorHandler(BindException ex) throws Exception {   logger.error("bindExceptionErrorHandler info:{}",ex.getMessage());   Response 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 add(@Validated User user){   //todo 此處為模擬返回   Response response = new Response<>();   response.setCode(Code.SUCCESSED);   response.setResult(new User());   return response;   }   //...

postMan模擬請(qǐng)求

不填寫任何屬性,模擬添加操作,準(zhǔn)確進(jìn)行攔截和報(bào)錯(cuò)

SpringBoot中如何實(shí)現(xiàn)全局異常與數(shù)據(jù)校驗(yàn)

項(xiàng)目結(jié)構(gòu)預(yù)覽:

SpringBoot中如何實(shí)現(xiàn)全局異常與數(shù)據(jù)校驗(yàn)

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


標(biāo)題名稱:SpringBoot中如何實(shí)現(xiàn)全局異常與數(shù)據(jù)校驗(yàn)
URL鏈接:http://weahome.cn/article/pgpdjh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部