我正在将来自Kafka的数据消费到一个bean类中,该类具有验证功能,以确保所读取的消息中包含有效数据。
我已经为bean类添加了注释,例如@NotNull和@Pattern,但是没有得到应用。
public class Class {
@NotNull
private String field1;
@Pattern(regexp = "^Open$|^Active$|^Overdue$|^Inactive$")
private String field2;
}
如何确保应用了bean验证,我在创建REST服务时早先使用了@RequestBody @Valid,但不确定如何在这种情况下应用。
答案 0 :(得分:0)
某些框架(例如Spring)具有仅通过使用批注来触发验证过程的简单方法。这主要是因为我们不必与程序验证API进行交互。
现在让我们手动进行设置,并以编程方式进行设置:
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
要验证bean,首先必须有一个Validator对象,该对象是使用ValidatorFactory构造的。
我们现在要设置此无效用户-名称值为空
User user = new User();
user.setWorking(true);
user.setAboutMe("Its all about me!");
user.setAge(50);
现在我们有了一个验证器,我们可以将其传递给validate方法来验证我们的bean。任何违反User对象中定义的约束的情况都将作为Set返回。
Set<ConstraintViolation<User>> violations = validator.validate(user);
通过遍历违规,我们可以使用getMessage方法获取所有违规消息。
for (ConstraintViolation<User> violation : violations) {
log.error(violation.getMessage());
}