Spring middle

Почему @Transactional не работает при self-invocation?

Ответ

Вызов this.method() идёт минуя прокси. Решение: вынести метод в другой бин или инжектить self через ApplicationContext / @Lazy self.

Разбор: Spring AOP оборачивает бин в прокси, и @Transactional срабатывает только при вызове через него; вызов this.method() обращается к самому объекту напрямую, минуя прокси, поэтому advice не применяется. Решение — вынести метод в отдельный бин или инжектить self-ссылку (через ApplicationContext или @Lazy). Это не связано ни с модификатором доступа сам по себе как причиной, ни с моментом создания прокси, ни с propagation.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться