@TransactionalEventListener позволяет слушать ApplicationEvents с привязкой к фазе транзакции. phase=AFTER_COMMIT — событие обрабатывается только если транзакция закоммичена (дефолт). Это решает проблему: publishEvent внутри транзакции → listener вызывается до commit → пытается читать данные которых ещё нет. AFTER_COMMIT гарантирует что данные в БД. Но: listener выполняется уже вне исходной транзакции — нужна своя транзакция для listeners с DB операциями (@Transactional(propagation=REQUIRES_NEW)).
Как работает @TransactionalEventListener в Spring?
Middle
290 просмотровAFK Offer AI
Что такое backpressure в реактивном программировании?