sharp-common集成验证

集成

注册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);
}