Встречается на собеседованиях • сегодня

В каких случаях аннотация Transactional не сработает

Transactional не сработает в следующих случаях:

  1. Приватные методы – Spring использует AOP прокси, которые не могут перехватывать вызовы private методов.

  2. Внутренние вызовы – Если метод класса вызывает другой метод этого же класса, транзакция не будет работать (проблема self-invocation).

  1. Не Spring-бин – Метод должен быть частью Spring-бина (управляемого контейнером).

  2. Неправильная конфигурация – Отсутствие @EnableTransactionManagement или неправильный менеджер транзакций.

  3. Checked исключения – По умолчанию транзакция откатывается только на unchecked исключениях.

Пример self-invocation:

java
@Service
public class UserService {
    @Transactional
    public void outerMethod() {
        innerMethod(); // транзакция не сработает
    }

    @Transactional
    public void innerMethod() {
        // логика
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы