validation 参数校验和统一异常处理
生活随笔
收集整理的這篇文章主要介紹了
validation 参数校验和统一异常处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 引入依賴
- 2. 校驗規則
- 3. 規則使用
- 4. 自定義異常類
- 5. 統一返回對象封裝
- 6. 統一異常對象
- 7. 統一異常枚舉
- 8. 前端form表單輸入,自動觸發校驗
1. 引入依賴
<!--參數校驗--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>2. 校驗規則
@NotNull(message = "【每頁頁碼】不能為空")private int page;@NotNull(message = "【每頁條數】不能為空")@Max(value = 100,message = "【每頁條數】不能超過100")3. 規則使用
public CommonResp list(@Valid EbookQueryReq req) {}4. 自定義異常類
package com.jiawa.wiki.controller;import com.jiawa.wiki.exception.BusinessException; import com.jiawa.wiki.resp.CommonResp; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.validation.BindException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody;/*** 統一異常處理、數據預處理等*/ @ControllerAdvice public class ControllerExceptionHandler {private static final Logger LOG = LoggerFactory.getLogger(ControllerExceptionHandler.class);/*** 校驗異常統一處理* @param e* @return*/@ExceptionHandler(value = BindException.class)@ResponseBodypublic CommonResp validExceptionHandler(BindException e) {CommonResp commonResp = new CommonResp();LOG.warn("參數校驗失敗:{}", e.getBindingResult().getAllErrors().get(0).getDefaultMessage());commonResp.setSuccess(false);commonResp.setMessage(e.getBindingResult().getAllErrors().get(0).getDefaultMessage());return commonResp;}5. 統一返回對象封裝
package com.jiawa.wiki.resp;public class CommonResp<T> {/*** 業務上的成功或失敗*/private boolean success = true;/*** 返回信息*/private String message;/*** 返回泛型數據,自定義類型*/private T content;public boolean getSuccess() {return success;}public void setSuccess(boolean success) {this.success = success;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public T getContent() {return content;}public void setContent(T content) {this.content = content;}@Overridepublic String toString() {final StringBuffer sb = new StringBuffer("ResponseDto{");sb.append("success=").append(success);sb.append(", message='").append(message).append('\'');sb.append(", content=").append(content);sb.append('}');return sb.toString();} }6. 統一異常對象
package com.jiawa.wiki.exception;public class BusinessException extends RuntimeException{private BusinessExceptionCode code;public BusinessException (BusinessExceptionCode code) {super(code.getDesc());this.code = code;}public BusinessExceptionCode getCode() {return code;}public void setCode(BusinessExceptionCode code) {this.code = code;}/*** 不寫入堆棧信息,提高性能*/@Overridepublic Throwable fillInStackTrace() {return this;} }7. 統一異常枚舉
package com.jiawa.wiki.exception;public enum BusinessExceptionCode {USER_LOGIN_NAME_EXIST("登錄名已存在"),LOGIN_USER_ERROR("用戶名不存在或密碼錯誤"),VOTE_REPEAT("您已點贊過"),;private String desc;BusinessExceptionCode(String desc) {this.desc = desc;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;} }8. 前端form表單輸入,自動觸發校驗
總結
以上是生活随笔為你收集整理的validation 参数校验和统一异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flowable 数据库表结构 ACT_
- 下一篇: ETL异构数据源Datax_数据准备_0