Как включить валидатор бина - Spring boot - PullRequest
1 голос
/ 09 июня 2019

Я потребляю данные из Kafka в класс бина, который имеет проверку, чтобы убедиться, что сообщение, которое я читаю, содержит действительные данные.

Я добавил аннотации к классу бина, например, @NotNull &@Pattern, но это не применяется.

public class Class {
    @NotNull
    private String field1;

    @Pattern(regexp = "^Open$|^Active$|^Overdue$|^Inactive$")
    private String field2;
}

Как я могу убедиться, что проверка bean-компонентов применяется, я раньше использовал @RequestBody @Valid при создании служб REST, но не уверен, как применять в этом сценарии.

1 Ответ

0 голосов
/ 09 июня 2019

Программная проверка:

Некоторые фреймворки, такие как Spring, имеют простые способы запуска процесса проверки, просто используя аннотации. Это главным образом для того, чтобы нам не приходилось взаимодействовать с программным API проверки.

Давайте теперь пойдем ручным маршрутом и настроим все программно:

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();

Чтобы проверить бин, мы должны сначала иметь объект Validator, который создается с использованием ValidatorFactory.

Теперь мы собираемся настроить этого недопустимого пользователя с нулевым значением имени:

User user = new User();
user.setWorking(true);
user.setAboutMe("Its all about me!");
user.setAge(50);

Теперь, когда у нас есть Validator, мы можем проверить наш bean-компонент, передав его методу validate. Любые нарушения ограничений, определенных в объекте User, будут возвращены как Set.

Set<ConstraintViolation<User>> violations = validator.validate(user);

Итерируя нарушения, мы можем получить все сообщения о нарушениях, используя метод getMessage.

for (ConstraintViolation<User> violation : violations) {
log.error(violation.getMessage()); 
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...