自定義校驗註解
阿新 • • 發佈:2019-01-03
平時專案中使用的@NotNull,@Pattern等校驗註解進行校驗,自己也可以針對要實現的邏輯進行自定義註解。
1.可以參照著@NotNull註解設計一個註解類
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER }) @Retention(RUNTIME) @Constraint(validatedBy = MyConstraintValidator.class) public @interface MyConstraint { String message() default "just test"; Class<?>[] groups() default { }; Class<? extends Payload>[] payload() default { }; }
2.上面的MyConstraintValidator是具體的邏輯實現類
public class MyConstraintValidator implements ConstraintValidator<MyConstraint,String> { @Override public void initialize(MyConstraint myConstraint) { System.out.println("--------------校驗初始化----------------"); } @Override public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { System.out.println("---------------進入校驗-----------------"); return !((String) value).matches("fuck"); } }
3.使用方法和其他註解一樣
@Data @Builder @NoArgsConstructor @AllArgsConstructor public class User { @MyConstraint private String username; @NotNull private Integer age; private String password;}
@GetMapping("/test") public String query(@Valid User u) { return "ok"; }
程式執行結果: