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

Какие знаешь случаи, когда Transactional метод может не сработать в Spring

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

  1. Вызов из того же класса – если метод вызывается внутри класса (не через прокси), аннотация игнорируется.
java
public class Service {
    @Transactional
    public void outer() {
        inner(); // Не будет транзакционным!
    }
text
@Transactional
public void inner() {}

}

text

2. **Модификатор `private`** – Spring не может создать прокси для приватных методов.  

3. **Исключение не `RuntimeException`** – по умолчанию откатывает только на `RuntimeException`. Используйте `@Transactional(rollbackFor = Exception.class)`.  

4. **Самоперехват исключения** – если исключение перехватывается внутри метода, транзакция не откатится.  

5. **Неправильный propagation** – например, `REQUIRES_NEW` вложенной транзакции может завершиться независимо.  

6. **Нет бина `PlatformTransactionManager`** – без конфигурации транзакций аннотация игнорируется.  

7. **Метод `final`** – Spring AOP не может проксировать финальные методы.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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