Spring middle

Как работает @Transactional под капотом?

Ответ

Spring создаёт прокси (JDK dynamic proxy для интерфейсов или CGLIB для классов). Прокси открывает транзакцию перед методом, коммитит после или откатывает при исключении.

Разбор: @Transactional реализован через прокси (JDK dynamic proxy для интерфейсов, CGLIB для классов), который открывает транзакцию до метода и коммитит/откатывает после. Ловушки: это прокси, а не модификация байт-кода класса, поэтому самовызов внутри класса транзакцию не активирует; по умолчанию откат происходит только на RuntimeException и Error, а checked-исключения коммитятся; и управление транзакцией — это именно прокси поверх TransactionManager.

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

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