ApplicationEventPublisher.publishEvent() — синхронно вызывает всех слушателей в той же транзакции. Если @EventListener бросает exception — откатывается основная транзакция. @Async @EventListener — асинхронно, вне транзакции. @TransactionalEventListener(phase=AFTER_COMMIT) — слушатель вызывается после коммита, вне транзакции (нужна @Transactional(propagation=REQUIRES_NEW) если делает DB операции). @TransactionalEventListener с BEFORE_COMMIT — в той же транзакции перед коммитом. Важно выбрать правильную фазу для надёжности.
Как работает транзакционный контекст при использовании Spring Events?
Senior
224 просмотровAFK Offer AI
Как использовать EXPLAIN для оптимизации JPA запросов?