Как реализовать валидацию бизнес-логики в Spring (например: возраст >16 лет, нет заблокированных счетов, лимит карт не превышен)?

В Spring для валидации бизнес-логики можно использовать несколько подходов:

Короткий ответ

Что ответить на собеседовании

В Spring для валидации бизнес-логики можно использовать несколько подходов:

Подробный разбор

Ответ с пояснениями

В Spring для валидации бизнес-логики можно использовать несколько подходов:

  1. Кастомные аннотации и валидаторы с использованием Bean Validation (JSR-380). Например, можно создать аннотацию @AgeValid и реализовать логику проверки возраста.
  2. Сервисный уровень — проверять бизнес-правила в сервисах перед выполнением операций. Например, в методе сервиса проверять, что возраст > 16, нет заблокированных счетов и лимит карт не превышен.
  3. Использование AOP (Aspect-Oriented Programming) для отделения кросс-срезных проверок.

Пример проверки в сервисе:

public void createUser(UserDto userDto) {
    if (userDto.getAge() <= 16) {
        throw new BusinessException("Возраст должен быть больше 16 лет");
    }
    if (accountRepository.existsBlockedAccounts(userDto.getUserId())) {
        throw new BusinessException("Пользователь имеет заблокированные счета");
    }
    if (cardRepository.countByUserId(userDto.getUserId()) >= MAX_CARDS_LIMIT) {
        throw new BusinessException("Превышен лимит карт");
    }
    // дальнейшая логика создания пользователя
}

Такой подход позволяет централизованно контролировать бизнес-правила и легко их поддерживать.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее