Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: transactional, propagation, isolation, retryable, backoff

Что делают аннотации @Transactional и @Retryable?

Проверяет знания о декларативном управлении транзакциями и повторных попытках.

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

@Transactional оборачивает метод в транзакцию: BEGIN перед выполнением, COMMIT при успехе, ROLLBACK при исключении. @Retryable (из Spring Retry) автоматически повторяет вызов метода при указанном типе исключений, с настройками количества попыток, задержек и backoff-политики.

Длинный ответ

@Transactional:

  • Propagation: режим распространения (REQUIRED, REQUIRES_NEW).

  • Isolation: уровень изоляции (READ_COMMITTED, SERIALIZABLE).

  • ReadOnly: флаг для оптимизации чтения.

  • RollbackFor/NoRollbackFor: указывают, какие исключения откатывают транзакцию.

@Retryable:

  • Параметры: value (тип исключения), maxAttempts, backoff (delay, multiplier).

  • Работает через AOP-прокси, перехватывает исключение, ждет и повторяет вызов.

  • В комбинации с @Recover позволяет обрабатывать исчерпавшие попытки.

Пример:

@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void transfer(...) { ... }

@Retryable(value = RemoteServiceException.class, maxAttempts = 3, backoff = @Backoff(2000))
public String callRemote() { ... }

Вывод:

  • @Transactional фиксирует границы транзакций,

  • @Retryable повышает надёжность интеграций.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#transactional

#propagation

#isolation

#retryable

#backoff

Подпишись на Java Developer в телеграм