Sobes.tech
Назад к вопросам
Senior
7

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

Компании, где спрашивали
EXPERA

Ответ от нейросети

sobes.tech AI

В 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("Превышен лимит карт");
    }
    // дальнейшая логика создания пользователя
}

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