Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Spring: requires, new

Что произойдёт при REQUIRES_NEW?

Вопрос проверяет понимание изоляции транзакций и последствий создания новой транзакции внутри существующей.

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

При REQUIRES_NEW текущая транзакция приостанавливается, и создаётся новая. Внутренний метод выполняется полностью независимо. Его commit или rollback не влияет на внешнюю транзакцию. После завершения внутренняя транзакция закрывается, и внешняя продолжается. Это используется для изолированных операций.

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

REQUIRES_NEW часто применяют, когда часть логики должна быть зафиксирована независимо от общего результата.

Определение

REQUIRES_NEW — тип propagation, который всегда создаёт новую транзакцию, приостанавливая текущую.

Пошаговое поведение

Рассмотрим вложенный вызов.

  1. Внешний метод начинает транзакцию

  2. Вызывается метод с REQUIRES_NEW

  3. Внешняя транзакция приостанавливается

  4. Создаётся новая транзакция

  5. Внутренний метод выполняется

  6. Происходит commit или rollback новой транзакции

  7. Возобновляется внешняя транзакция

Важные последствия

  1. Ошибка во внутреннем методе:

    • откатывает только новую транзакцию

    • внешняя продолжает работу

  2. Ошибка во внешнем методе:

    • откатывает внешнюю транзакцию

    • не влияет на уже закоммиченный REQUIRES_NEW

Типичный пример использования

  1. Логирование

  2. Аудит

  3. Отправка событий

  4. Сохранение ошибок

Вывод

REQUIRES_NEW обеспечивает полную изоляцию транзакций. Его стоит использовать, когда часть данных должна быть сохранена независимо от общего результата операции.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • Spring

    Spring

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

#requires

#new

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