Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Spring: transactional, aop

Что такое аннотация @Transactional и как Spring реализует транзакции под капотом?

Вопрос проверяет понимание декларативного управления транзакциями и того, как Spring обеспечивает атомарность операций с данными.

Короткий ответ

@Transactional — это аннотация для управления транзакциями декларативно. Spring оборачивает вызов метода в транзакцию автоматически. Под капотом используется AOP и прокси. Фактическое управление транзакцией делегируется PlatformTransactionManager. Разработчик описывает правила, а не пишет код транзакций вручную.

Длинный ответ

Spring старается скрыть низкоуровневую работу с транзакциями и дать разработчику простой и безопасный API.

Определение

@Transactional — аннотация Spring, которая определяет границы транзакции и правила её поведения при выполнении метода.

Как работает @Transactional

Механизм основан на прокси и AOP.

  1. Spring создаёт прокси для бина

  2. Вызов метода проходит через прокси

  3. Прокси:

    • открывает транзакцию

    • вызывает целевой метод

    • коммитит или делает rollback

Что используется под капотом

  1. AOP

    • перехват вызова метода

  2. PlatformTransactionManager

    • управляет транзакцией

    • реализация зависит от технологии (JPA, JDBC)

  3. Thread-bound context

    • транзакция привязана к потоку

Когда происходит rollback

По умолчанию:

  1. Rollback при RuntimeException

  2. Commit при успешном выполнении

Можно переопределить:

@Transactional(rollbackFor = Exception.class)

Важные ограничения

  1. Не работает при вызове метода внутри того же класса

  2. Работает только через Spring-контейнер

  3. Зависит от корректной настройки transaction manager

Вывод

@Transactional — это декларативный способ управления транзакциями. Spring реализует его через прокси и AOP, избавляя от ручного контроля.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • Spring

    Spring

Ключевые слова

#transactional

#aop

Подпишись на Java Developer в телеграм