處理請求時, 有些參數是必傳或者必須遵循某些規則的, 如果針對每個請求都寫一遍驗證的話相當繁瑣, 而且代碼維護起來也麻煩, 正好框架將參數校驗的功能抽象處理啊了, 我們可以利用這個完成80%的校驗場景
使用方式
使用起來很簡單, 只需要加上幾個註解即可
@NotNull
在需要驗證的非空字段前面加上@NotNull
註解(註解還可設置提示語), 如下
@Min
有寫數值類型的需要限制範圍, 例如: 時間需要大於0
@valid
在需要校驗的接口的入參前加上@valid
註解
驗證生效
這兩個地方加上註解就可以了
進階
有時候默認的非空或者範圍校驗不能滿足部分定製化的需求
我們可以通過自定義校驗註解來按我們的凡是校驗數據
註解接口
定義一個自己的註解(檢驗邏輯入口)
注意:
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
這兩個是必須的…
@Target(value= {METHOD, FIELD, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = CheckEvaluationKeyValidator.class)
@Documented
public @interface CheckEvaluationKey {
String message() default "{CheckEvaluationKey}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
String evaluationKey() default "";
}
校驗邏輯實現
實現校驗邏輯, 需要在自定義註解中指定使用的校驗邏輯
@Constraint(validatedBy = CheckEvaluationKeyValidator.class)
系統就會更具註解自動進入我們的校驗邏輯
public class CheckEvaluationKeyValidator implements ConstraintValidator<CheckEvaluationKey, String> {
private String checkEvaluationKey;
@Override
public void initialize(CheckEvaluationKey constraintAnnotation) {
this.checkEvaluationKey = constraintAnnotation.evaluationKey();
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if (JudgeUtil.isNull(checkEvaluationKey)) {
String evaluationName = EvaluationEnum.getEvaluationNameWithOutAssert(value);
return JudgeUtil.isPresent(evaluationName);
} else {
return JudgeUtil.equals(value, checkEvaluationKey);
}
}
}
自定義註解使用
其他校驗註解
@Null
: 被註釋的元素必須爲null@NotNull
: 被註釋的元素不能爲null@AssertTrue
: 被註釋的元素必須爲true@AssertFalse
: 被註釋的元素必須爲false@Min(value)
: 被註釋的元素必須是一個數字,其值必須大於等於指定的最小值@Max(value)
: 被註釋的元素必須是一個數字,其值必須小於等於指定的最大值@DecimalMin(value)
: 被註釋的元素必須是一個數字,其值必須大於等於指定的最小值@DecimalMax(value)
: 被註釋的元素必須是一個數字,其值必須小於等於指定的最大值@Size(max,min)
: 被註釋的元素的大小必須在指定的範圍內。@Digits(integer,fraction)
: 被註釋的元素必須是一個數字,其值必須在可接受的範圍內@Past
: 被註釋的元素必須是一個過去的日期@Future
: 被註釋的元素必須是一個將來的日期@Pattern(value)
: 被註釋的元素必須符合指定的正則表達式。@Email
: 被註釋的元素必須是電子郵件地址@Length
: 被註釋的字符串的大小必須在指定的範圍內@NotEmpty
: 被註釋的字符串必須非空@Range
: 被註釋的元素必須在合適的範圍內