Добавляем в pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
или
<dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> </dependency>
Первый ее под капотом использует
Подробнее про Hibernate Validator можно прочитать тут
Для запуска механизма валидации обычно используют две аннотации: @Valid и @Validated.
Валидация параметров метода:
public void createUser(@Valid User user) { ... }
Поля переданного в метод объекта должны быть валидированы, согласно указанным в нем(объекте) аннотациям
Валидация полей класса:
@Valid private User user;
Поле, определенное в каком-либо классе и аннотированное @Valid, будет валидированно при его использовании
Валидация коллекций:
@Valid @NotNull private List<User> users;
Аннотация @Valid указывает, что каждый элемент списка users должен быть валидирован
Аннотация @NotNull указывает, что список users не должен быть null
@Validated
используется для групповой или частичной поверки.
Подробнее
тут
Разница между @Validated и @Valid - тут
Аннотаций для условий валидации очень много.
Часто используемые @NotBlank, @NotEmpty и @NotNull.
javax.validation.constraints
Аннотация @NotNull проверяет, что значение поля не равно null.
Она не проверяет, пустое ли значение или состоит ли оно из пустых пробелов.
Используется в случаях, когда необходимо удостовериться, что поле содержит какое-либо значение, а не является null.
Пример:
public classUser {@NotNull private String username;// getters and setters }
javax.validation.constraints
Аннотация @NotEmpty гарантирует, что поле не равно null и не является пустой коллекцией или строкой.
Она применяется к коллекциям, строкам или массивам.
Используется, когда необходимо удостовериться, что значение существует и не является пустым.
Пример:
public classUser {@NotEmpty private List<String> roles;// getters and setters }
javax.validation.constraints
Аннотация @NotBlank применяется только к строкам и проверяет, что строка не равна null, не является пустой и не состоит только из пробелов.
Используется тогда, когда необходимо удостовериться, что строка содержит значимые символы.
Пример:
public classUser {@NotBlank private String name;// getters and setters }
javax.validation.constraints
Аннотация @Pattern из пакета javax.validation.constraints используется для проверки соответствия строкового поля заданному регулярному выражению.
Она не включает в себя проверку на null или пустую строку.
Если вам нужно одновременно проверить, что строка соответствует определенному шаблону и не является null или пустой, вы должны использовать @Pattern вместе с другими аннотациями, такими, как @NotNull, @NotEmpty или @NotBlank.
Пример:
import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern; public classUser {@NotBlank @Pattern(regexp = "^[a-zA-Z0-9]+$") private String username;// getters and setters }
В этом примере:
Если вы используете только @Pattern, нужно дополнительно использовать @NotNull, @NotEmpty или @NotBlank для полной проверки.
между часто используемыми
Для поля типа Integer (int) наиболее подходящей аннотацией для валидации будет @NotNull.
Если нужно проверить, что значение находится в допустимом диапазоне (например от 0 до 65535), можно дополнительно использовать аннотацию @Min и @Max.
Пример:
import javax.validation.constraints.NotNull; import javax.validation.constraints.Min; import javax.validation.constraints.Max; public classServerConfig {@NotNull @Min(0) @Max(65535) private Integer port;// getters and setters }
Объяснение:
Эти аннотации вместе гарантируют, что значение поля port будет не только задано, но и находиться в допустимом диапазоне для номеров портов.
Валидировать можно почти все