Встречается на собеседованиях • сегодня
В каких случаях аннотация Transactional не сработает
Transactional не сработает в следующих случаях:
-
Приватные методы – Spring использует AOP прокси, которые не могут перехватывать вызовы private методов.
-
Внутренние вызовы – Если метод класса вызывает другой метод этого же класса, транзакция не будет работать (проблема self-invocation).
-
Не Spring-бин – Метод должен быть частью Spring-бина (управляемого контейнером).
-
Неправильная конфигурация – Отсутствие @EnableTransactionManagement или неправильный менеджер транзакций.
-
Checked исключения – По умолчанию транзакция откатывается только на unchecked исключениях.
Пример self-invocation:
java
@Service
public class UserService {
@Transactional
public void outerMethod() {
innerMethod(); // транзакция не сработает
}
@Transactional
public void innerMethod() {
// логика
}
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы