Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Spring: transaction, synchronization, commit, rollback

Как выполнить действия после commit или rollback транзакции?

Как выполнить действия после commit или rollback транзакции?

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

Spring позволяет регистрировать callbacks, которые выполняются после завершения транзакции.
Можно отреагировать отдельно на commit и rollback.
Для этого используются специальные API транзакционного менеджера.
Такой подход позволяет безопасно запускать побочные действия.
Это важно для асинхронных операций и интеграций.

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

Часто возникает необходимость выполнить логику строго после фиксации транзакции.

Основная проблема

Если выполнить действие внутри транзакции:

  • данные могут быть ещё не зафиксированы

  • при rollback побочное действие уже выполнено

Использование TransactionSynchronization

Spring предоставляет механизм синхронизации с транзакцией.

TransactionSynchronizationManager.registerSynchronization(
    new TransactionSynchronization() {
        @Override
        public void afterCommit() {
            // логика после commit
        }

        @Override
        public void afterCompletion(int status) {
            if (status == STATUS_ROLLED_BACK) {
                // логика после rollback
            }
        }
    }
);

Когда это используется

  • отправка сообщений

  • публикация событий

  • запуск асинхронных задач

  • интеграции с внешними системами

Альтернатива — события Spring

Можно использовать:

  • @TransactionalEventListener

  • фазу AFTER_COMMIT или AFTER_ROLLBACK

Это упрощает код и делает его более декларативным.

Вывод

Действия после commit или rollback нужно выполнять через транзакционные callbacks, а не напрямую внутри бизнес-логики.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • Spring

    Spring

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

#transaction

#synchronization

#commit

#rollback

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