Валидация
Проверка входных данных до вызова сервиса
Десериализованный JSON ещё не означает корректный запрос. Поле может быть пустым, строка — слишком длинной, а число — выходить за допустимый диапазон. В Spring MVC такие правила удобно описывать через Jakarta Bean Validation прямо на DTO.
record CreateUserRequest(
@NotBlank String name,
@Email String email,
@Min(18) int age) {}
@PostMapping("/users")
UserDto create(@Valid @RequestBody CreateUserRequest request) {
return userService.create(request);
}
Аннотации @NotBlank, @Email и
@Min задают ограничения для отдельных компонентов DTO.
@Valid на аргументе контроллера запускает проверку объекта после его создания из запроса.
Если данные не проходят ограничения, обычный вызов метода не продолжается.
Валидация не заменяет бизнес-правила
Проверка формата и простых ограничений хорошо подходит web-границе: обязательность поля, формат email, диапазон числа. Правила вроде «пользователь с таким email уже существует» обычно требуют обращения к состоянию приложения и остаются частью бизнес-логики.