Назад к вопросам
Senior
7
Как реализовать валидацию бизнес-логики в Spring (например: возраст >16 лет, нет заблокированных счетов, лимит карт не превышен)?
Компании, где спрашивали
EXPERA
Ответ от нейросети
sobes.tech AI
В Spring для валидации бизнес-логики можно использовать несколько подходов:
-
Кастомные аннотации и валидаторы с использованием Bean Validation (JSR-380). Например, можно создать аннотацию
@AgeValidи реализовать логику проверки возраста. -
Сервисный уровень — проверять бизнес-правила в сервисах перед выполнением операций. Например, в методе сервиса проверять, что возраст > 16, нет заблокированных счетов и лимит карт не превышен.
-
Использование 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("Превышен лимит карт");
}
// дальнейшая логика создания пользователя
}
Такой подход позволяет централизованно контролировать бизнес-правила и легко их поддерживать.