Вместо того, чтобы вставлять код в текст, рассмотрите возможность поделиться реальным примером, который могут запустить другие. Если у вас есть учетная запись GitHub, очень легко создать репо и скопировать / вставить этот материал в небольшой проект, созданный из start.spring.io.
Я сделал это, и он работает, как и ожидалось,см. https://github.com/snicoll-scratches/test-so-58552671
Обратите внимание, что я сохранил часть Thread.sleep
, но вам не следует делать это, если транзакция была запущена за пределами этого метода, так как режим сна не позволит завершить транзакцию.
В любом случае, приведенный выше код не соответствует тому, что вы утверждаете, поэтому должно быть что-то еще. Вы можете посмотреть пример проекта и отправить ему пиар с вашим изменением, если вы все еще можете воспроизвести эту проблему.
РЕДАКТИРОВАТЬ: Спасибо за предоставление пиара для моего оригинального образца. Ваша установка вообще не использует управление транзакциями (нет поддержки транзакций, нет активного менеджера транзакций). TransactionalEventListener
- это EventListener
, поэтому событие будет передано как есть. Я добавил @EnableTransactionManagement
к вашему PR, и с инфраструктурой транзакций все работает как положено.