我创建了一个通用的验证方法,该方法主要验证一个bean(休眠验证器),然后返回已验证的约束违反消息列表。 无论如何,为了使它“通用”,我定义了一个接口,该接口什么都不做,但限定实现它的类。
看起来像这样:
public interface Validatable {
}
public class A implements Validatable {
@NotBlank
private String name;
}
public class B implements Validatable {
@NotNull
private int age;
}
private List<String> validate(Validatable bean) {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<Validatable>> violations = validator.validate(bean);
List<String> validationErrors = violations.stream()
.map(ConstraintViolation::getMessage)
.collect(Collectors.toList());
return validationErrors;
}
关于我提出的注释问题,我想知道是否可以定义Validatable
注释,以便可以使用它同时标记A
和B
而不是实现空接口。
我不认为这是最好的方法。不确定注解是可行的还是最佳选择。有什么建议吗?