Встречается на собеседованиях • сегодня
Какие знаешь случаи, когда Transactional метод может не сработать в Spring
Transactional в Spring может не сработать в следующих случаях:
- Вызов из того же класса – если метод вызывается внутри класса (не через прокси), аннотация игнорируется.
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 не может проксировать финальные методы.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы