自定義注解校驗參數
自定義注解校驗參數:
1、定義注解,寫好返回值,申明注解的用處,文檔生成
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Constraint(validatedBy = TypeValidClz.class)
@Documented
public @interface TypeValid {
String message() default "type輸入無效!";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
@Target(ElementType.FIELD)注解指定我們這個注解作用于FIELD:類的屬性上,
@Retention(RetentionPolicy.RUNTIME)注解用于指定自定義注解的生命周期,即該注解在什么情況下可用。
RetentionPolicy.RUNTIME:表示注解在運行時仍然可用。允許程序通過反射讀取注解的信息。換句話說,注解會在編譯后保留,并在運行時可以通過反射機制訪問。
@Documented 注解用于指示是否將被注解的元素包含在 Javadoc 中
@Constraint 注解用于標注自定義約束注解,并通過 validatedBy 屬性指定約束注解的驗證器(Validator)類。
validatedBy = TypeValidClz.class 指定了該約束注解的驗證邏輯由TypeValidClz 類來實現。
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class TypeValidClz implements ConstraintValidator<TypeValid, String> {
@Override
public void initialize(TypeValid constraintAnnotation) {
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
// 實現驗證邏輯,驗證 value 是否符合條件,下面邏輯指定了輸入的值不能為空且已type開頭
return value != null && value.startsWith("type");
}
}
使用注解限制參數:
public Class UserDTO{
private String name;
@TypeValid
private String Type;
}
朋友和酒,少年和詩,路和遠方。

浙公網安備 33010602011771號