Встречается на собеседованиях • сегодня
Сколько будет транзакций, если один метод с аннотацией Transactional вызывает другой с этой же аннотацией в одном классе в Spring
В Spring по умолчанию будет только одна транзакция. Это происходит из-за работы Spring AOP - проксирование классов. Внутренние вызовы методов в одном классе не перехватываются прокси, поэтому аннотация @Transactional на внутреннем методе игнорируется.
Пример:
java
@Service
public class MyService {
@Transactional
public void outerMethod() {
innerMethod(); // не создаст новую транзакцию
}
@Transactional
public void innerMethod() {
// выполняется в транзакции outerMethod
}
}Чтобы изменить поведение, можно:
- Использовать самовызов через ApplicationContext
- Вынести innerMethod в отдельный сервис
- Использовать AspectJ вместо Spring AOP

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы