Sobes.tech
Назад к вопросам
Middle
8

Как работает аннотация @Transactional в Spring? Что такое прокси и когда создаётся?

Компании, где спрашивали
RedLab

Ответ от нейросети

sobes.tech AI

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

Spring реализует @Transactional через прокси — это объект-обёртка вокруг вашего бина, который перехватывает вызовы методов. Прокси создаётся при инициализации контекста Spring для бинов, помеченных как транзакционные. Он добавляет логику начала и завершения транзакции вокруг вызова метода.

Прокси создаётся:

  • При загрузке контекста Spring, если включена поддержка транзакций.
  • Для бинов, методы которых аннотированы @Transactional.

Пример:

@Service
public class UserService {
    @Transactional
    public void createUser(User user) {
        // операции с базой данных
    }
}

При вызове createUser через прокси Spring откроет транзакцию, выполнит метод и затем закроет транзакцию, сделав коммит или откат.