如何启用bean验证器-Spring Boot

时间:2019-06-09 09:16:20

标签: java spring-boot hibernate-validator spring-validator

我正在将来自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,但不确定如何在这种情况下应用。

1 个答案:

答案 0 :(得分:0)

Programmatic Validation :

某些框架(例如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()); 
 }