Назад к вопросам
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 откроет транзакцию, выполнит метод и затем закроет транзакцию, сделав коммит или откат.