集成
注册ValidatorHelper.java
@Configuration
@RequiredArgsConstructor
public class AppConfig {
private final Validator validator;
@Bean
public ValidatorHelper validatorHelper() {
return new ValidatorHelper(validator);
}
}
测试
User.java
@Value
@Builder
public class User {
@PhoneValid
private String phone;
@NotBlank
private String name;
}
Test.java
@Autowired
private ValidatorHelper validatorHelper;
@Test
public void testValidate() {
User user = User.builder().name("rick").phone("18898987765").build();
validatorHelper.validate(user);
}
@Test(expected = IllegalArgumentException.class)
public void testValidate2() {
User user = User.builder().name("Rick").phone("188").build();
validatorHelper.validate(user);
}
自定义验证
枚举值验证
枚举SexEnum
UserStatusEnum
@AllArgsConstructor
@Getter
public enum SexEnum {
FEMALE(0, "FEMALE"),
MALE(1, "MALE");
private static final Map<Integer, SexEnum> codeMap = new HashMap<>();
static {
for (SexEnum e: values()) {
codeMap.put(e.code, e);
}
}
private final Integer code;
private final String label;
public static SexEnum valueOfCode(Integer code) {
return codeMap.get(code);
}
}
@AllArgsConstructor
@Getter
public enum UserStatusEnum {
NORMAL("NORMAL"),
LOCKED("LOCKED");
private final String label;
public String getCode() {
return this.name();
}
public static UserStatusEnum valueOfCode(String code) {
return valueOf(code);
}
}
枚举中必须包含静态方法 valueOfCode
和 方法 getCode
。
User
中添加属性
@Value
@Builder
public class User {
@PhoneValid
private String phone;
@NotBlank
private String name;
// @EnumValid(target = SexEnum.class, message = "性别有误,不存在值${validatedValue}")
@EnumValid(target = SexEnum.class)
private int sex;
@EnumValid(target = UserStatusEnum.class, message = "用户状态有误,不存在值${validatedValue}")
private String userStatus;
}
测试:
@Test
public void testValidate3() throws BindException {
User user = User.builder().name("rick").phone("18898987765").sex(1).userStatus("LOCKED").build();
validatorHelper.validate(user);
}
@Test(expected = BindException.class)
public void testValidate4() throws BindException {
User user = User.builder().name("rick").phone("18898987765").sex(3).userStatus("ENABLED").build();
validatorHelper.validate(user);
}