Spring middle
@Transactional — прокси?
Ответ
Spring создаёт прокси (JDK/CGLIB). Прокси открывает транзакцию, вызывает метод, commit/rollback. self-call минует прокси → @Transactional/@Cacheable/@Async не работают. Решение: вынести в другой бин.
Разбор: Внешний вызов идёт через прокси-объект, но внутренний self-call (this.method()) обращается к методу напрямую в обход прокси, поэтому транзакционный/кэширующий advice не применяется. Корректное решение — вынести метод в отдельный бин или внедрить self-ссылку/использовать AopContext; synchronized, super и смена типа прокси проблему не решают.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.