自定义一个注解,用来检测某个值是否符合
1、注解接口:SensitiveWordCheck.java, SensitiveWordValidator.class为实现类
/**
* @Description:
*/
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = SensitiveWordValidator.class
)
public @interface SensitiveWordCheck {
String message() default "您输入的数据不合法";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
2、实现类,继承其他类,例如 ConstraintValidator、
/**
* @Description:实现类
*/
@Slf4j
public class SensitiveWordValidator implements ConstraintValidator<SensitiveWordCheck, String> {
@Override
public void initialize(SensitiveWordCheck sensitiveWordCheck) {
}
@Override
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
//校验逻辑处理
if (StringUtil.isEmpty(s)) {
return true;
}
try {
//验证逻辑
} catch (ClientTimeoutException e) {
//异常处理
return false;
}
}
3、ElementType含义:该注解用在哪种类型上是合法的
注解名称 | 含义 |
ANNOTATION_TYPE | 注解类型声明 |
CONSTRUCTOR | 构造方法声明 |
FIELD | 字段声明(包括枚举常量) |
LOCAL_VARIABLE | 局部变量声明 |
METHOD | 方法声明 |
PACKAGE | 包声明 |
PARAMETER | 参数声明 |
TYPE | 类、接口(包括注解类型)或枚举声明 |