自定义 Validat 校验注解
目标:实现校验手机号字段
1 加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2 定义注解
package cn.lucky.common.annotation.validation;
import cn.lucky.common.annotation.validation.ValidatorImpl.PhoneValidatorImpl;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
// 校验逻辑类
@Constraint(validatedBy = PhoneValidatorImpl.class)
/**
* phone 校验注解
* @author lucky
**/
public @interface IsPhone {
String message() default "手机号不正确";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
3 添加校验逻辑实现类 PhoneValidatorImpl
package cn.lucky.common.annotation.validation.ValidatorImpl;
import cn.hutool.core.util.PhoneUtil;
import cn.lucky.common.annotation.validation.IsPhone;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
/**
* @author lucky
*/
public class PhoneValidatorImpl implements ConstraintValidator<IsPhone,String> {
@Override
public boolean isValid(String phone, ConstraintValidatorContext constraintValidatorContext) {
// 这里使用了hutool工具类,读者也可自信实现具体逻辑
return PhoneUtil.isMobile(phone);
}
}
4 使用
public class RegistryBO {
/**
* 用户名
**/
@IsPhone
private String username;
/**
* 密码
**/
private String password;
}
/**
* @author lucky
*/
@RestController
@RequestMapping("/publisher/write")
public class Publisher {
@Autowired
private PublisherService publisherService;
/**
* 注册发布者
* @param registryBO registryBO
* @return BaseResponse
**/
@PostMapping("/registry")
public BaseResponse registry(@RequestBody @Valid RegistryBO registryBO) {
boolean registry = publisherService.registry(registryBO);
return registry ? BaseResponse.success() : BaseResponse.error();
}
}
自行测试即可。