Встречается на собеседованиях • сегодня
Почему не будет транзакции если в @Service второй метод вызывает первый метод и первый метод - @Transactional
Это связано с тем, как Spring обрабатывает транзакции через AOP-прокси. При вызове метода внутри того же класса, прокси не перехватывает вызов, и аннотация @Transactional игнорируется. Spring создает прокси только для вызовов извне класса.
java
@Service
public class MyService {
@Transactional
public void methodA() {
// транзакция не будет работать
methodB();
}
@Transactional
public void methodB() {
// выполнится без транзакции
}
}Решение:
- Вызывать метод через self-injection (
@Autowired private MyService self;) - Использовать
TransactionTemplate - Выносить транзакционные методы в отдельный сервис

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