Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Spring: transactional, rollback

В каких случаях аннотация @Transactional не срабатывает?

Вопрос проверяет понимание прокси-механизма Spring и ограничений транзакционного управления.

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

@Transactional не срабатывает, если метод вызывается напрямую внутри того же класса. Также она не работает для private методов. Проблемы возникают при неправильной конфигурации прокси. Еще одна частая причина — выбрасывание исключений, которые не приводят к rollback. Все эти случаи связаны с тем, как Spring применяет транзакции.

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

Работа @Transactional основана на AOP и прокси-объектах.

Основной принцип работы

Spring:

  • создает прокси вокруг бина

  • перехватывает вызовы методов

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

Если вызов проходит мимо прокси, транзакция не создается.

Частые случаи, когда не работает

Self-invocation

Если метод класса вызывает другой метод этого же класса:

  • вызов идет напрямую

  • прокси не участвует

  • транзакция не применяется

Неподходящая видимость метода

@Transactional:

  • не работает для private методов

  • работает для public (по умолчанию)

Неправильный тип исключений

По умолчанию rollback происходит:

  • только для RuntimeException и Error

Checked-исключения:

  • не вызывают rollback без настройки

Отсутствие прокси

Аннотация не сработает, если:

  • бин не управляется Spring

  • отключено транзакционное управление

Практические рекомендации

  • выносить транзакционные методы в отдельные бины

  • использовать rollbackFor

  • проверять способ вызова методов

Вывод: если вызов не проходит через прокси Spring, @Transactional работать не будет.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • Spring

    Spring

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

#transactional

#rollback

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