Spring middle

Два @Transactional метода в одном классе: A() вызывает B(). Сколько транзакций?

Ответ

Одна. Вызов this.B() минует прокси → @Transactional на B() не работает. B() выполняется в транзакции A() (Propagation.REQUIRED по умолчанию), которая открывается при внешнем вызове A() через прокси.

Разбор: Транзакция одна, потому что внутренний вызов this.B() идёт напрямую, минуя прокси Spring, и аннотация на B() не срабатывает; B() просто выполняется в транзакции, открытой при входе в A() через прокси. Ошибки дистракторов: REQUIRED не создаёт вложенную транзакцию (это NESTED), внутренний вызов как раз НЕ проходит через прокси, а транзакция A() при внешнем вызове работает нормально.

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

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