实现需求:
实现IP校验
1·创建注解
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
/**
* @author zhout
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = IpAddressValidator.class)
public @interface IpAddress {
String message() default "IP格式不正确。";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
通过@Constraint(validatedBy = IpAddressValidator.class)来指定校验规则
2·创建自定义校验器
具体校验逻辑在这里实现
import cn.hutool.core.lang.Validator;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
/**
* IP地址校验器
* @author zhout
*/
public class IpAddressValidator implements ConstraintValidator<IpAddress,String> {
@Override
public void initialize(IpAddress constraintAnnotation) {
ConstraintValidator.super.initialize(constraintAnnotation);
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
//这里实现具体的校验逻辑,校验通过则return true,否则return false
if (StringUtils.isBlank(value)) {
return false;
}
if (!Validator.isIpv4(value)){
return false;
}
return true;
}
}
3·给需要校验的字段添加我们创建的注解
@ApiModel("白名单IP对象")
@TableName("whitelist")
@Data
public class Whitelist implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("白名单IP")
@NotNull(message = "ip不能为空")
@IpAddress
private String ip;
}