Spring middle
Почему @Transactional не работает при вызове метода того же класса?
Ответ
Self-invocation идёт минуя прокси. Решение: вынести метод в отдельный бин или inject self.
Разбор: Причина та же, что и при любом self-invocation: вызов метода того же класса идёт напрямую к объекту, а не через транзакционный прокси, поэтому advice не отрабатывает. Корректное решение — вынести метод в другой бин или внедрить self-ссылку. Дистракторы апеллируют к потокам, propagation и кешированию рефлексии, но ни одно из этих объяснений не описывает реальный механизм прокси.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.