Как создать пользовательские проверки в приложении Spring Boot

May 02 2023
В Spring Boot проверка относится к процессу проверки того, соответствуют ли входные данные, полученные приложением, определенным правилам или критериям, определенным приложением. Проверка является неотъемлемой частью создания надежных и надежных приложений, поскольку она помогает предотвратить ошибки и обеспечить согласованность и целостность данных.

В Spring Boot проверка относится к процессу проверки того, соответствуют ли входные данные, полученные приложением, определенным правилам или критериям, определенным приложением. Проверка является неотъемлемой частью создания надежных и надежных приложений, поскольку она помогает предотвратить ошибки и обеспечить согласованность и целостность данных.

Spring Boot предоставляет встроенную поддержку проверки с использованием фреймворка Bean Validation, этот фреймворк определяет некоторый набор аннотаций.

Некоторые общие аннотации проверки:

  • @NotNul: данное поле не должно быть пустым.
  • @NotEmpty: данное поле не должно быть пустым.
  • @NotBlank: заданное строковое поле не должно быть пустой строкой.
  • @Minи @Max: данное числовое поле действительно только тогда, когда его значение выше или ниже определенного значения.
  • @Pattern: заданное строковое поле допустимо только тогда, когда оно соответствует определенному регулярному выражению.
  • @Email: данное строковое поле должно быть действительным адресом электронной почты.

Обязательная зависимость для проверки:

Сотрудник.java

СотрудникКонтроллер

Добавьте @Validаннотацию к параметрам метода и полям, которые мы хотим проверить. Аннотация @Valid указывает Spring Boot автоматически проверять входные данные на основе указанных нами ограничений проверки.

Тестирование вышеуказанной реализации:

Выше поля имени и электронной почты не соответствуют указанным критериям.

Чтобы собрать все ошибки, нам нужен «ExceptionHandler», и он приведен ниже:

Я обрабатываю MethodArgumentNotValidException сквозной обработчик исключений.

Проверка переменных пути и параметров запроса:

Проверка переменных пути и параметров запроса работает немного по-другому.

мы добавляем аннотацию ограничения @Min непосредственно к параметру метода в контроллере Spring :

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

@ExceptionHandler(ConstraintViolationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResponseEntity<String> handleValidationError(ConstraintViolationException exception) {

  return new ResponseEntity<>("not valid due to validation error: " + exception.getMessage(), HttpStatus.BAD_REQUEST);
}

мы можем использовать тот же вышеописанный процесс для параметров запроса.

Создание пользовательской проверки

Создайте собственный класс проверки

Добавьте аннотацию @Target, чтобы указать целевое поле, @Retention, чтобы указать политику хранения, @Constraint, чтобы создать настраиваемое ограничение.

Аннотация @Target является стандартной аннотацией Java и используется для ограничения использования аннотаций определенными типами элементов.

Создайте класс EmployeeTypeValidator, который реализует Constraint Validator для проверки правильности данных в поле:

Добавьте класс ValiadeEmployeeType в качестве аннотации над полем, для которого мы реализовали пользовательскую проверку.

Мы внедрили пользовательскую проверку для employeeType, employeeType должен быть либо постоянным, либо контрактным.

Если мы добавим какой-либо другой текст, кроме того, который мы упомянули для employeeType, он выдаст сообщение об ошибке, как показано ниже:

Выше указано «employeeType» как случайный текст.

Если мы передаем employeeTypes как постоянный или контрактный, вывод будет таким:

Обратитесь по ссылкам для других концепций Spring Boot:

Доступ на основе ролей Spring Security с Spring Boot

Аутентификация и авторизация Spring Security с помощью JWT

Учебное пособие по весеннему АОП

Учебник по логированию Spring Boot

Централизованная конфигурация в Spring Boot

javinpaul Domenico Nicoli Trey Huffine Arslan Ahmad Soma Mehmet Ozkaya The Educative Team