如何启用 bean 验证器 - Spring boot
How to enable bean validator - Spring boot
我正在将来自 Kafka 的数据消耗到一个 bean class 中,该 bean 进行了验证以确保我正在阅读的消息具有有效数据。
我已经向 bean class 添加了注释,例如 @NotNull 和 @Pattern,但是没有应用。
public class Class {
@NotNull
private String field1;
@Pattern(regexp = "^Open$|^Active$|^Overdue$|^Inactive$")
private String field2;
}
如何确保应用 bean 验证,我之前在创建 REST 服务时使用了 @RequestBody @Valid 但不确定如何在这种情况下应用。
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);
现在我们有了一个 Validator,我们可以通过将 bean 传递给 validate 方法来验证我们的 bean。任何违反用户对象中定义的约束的行为都将作为集合返回。
Set<ConstraintViolation<User>> violations = validator.validate(user);
通过迭代违规,我们可以使用getMessage方法获取所有违规信息。
for (ConstraintViolation<User> violation : violations) {
log.error(violation.getMessage());
}
我正在将来自 Kafka 的数据消耗到一个 bean class 中,该 bean 进行了验证以确保我正在阅读的消息具有有效数据。
我已经向 bean class 添加了注释,例如 @NotNull 和 @Pattern,但是没有应用。
public class Class {
@NotNull
private String field1;
@Pattern(regexp = "^Open$|^Active$|^Overdue$|^Inactive$")
private String field2;
}
如何确保应用 bean 验证,我之前在创建 REST 服务时使用了 @RequestBody @Valid 但不确定如何在这种情况下应用。
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);
现在我们有了一个 Validator,我们可以通过将 bean 传递给 validate 方法来验证我们的 bean。任何违反用户对象中定义的约束的行为都将作为集合返回。
Set<ConstraintViolation<User>> violations = validator.validate(user);
通过迭代违规,我们可以使用getMessage方法获取所有违规信息。
for (ConstraintViolation<User> violation : violations) {
log.error(violation.getMessage());
}