Встречается на собеседованиях • сегодня
Будет ли выполнена транзакция, если нетранзакционный метод вызывает транзакционный метод в Spring
В Spring транзакции работают через AOP-прокси, поэтому вызов транзакционного метода из того же класса (внутренний вызов) не будет обработан прокси. Транзакция не начнется, если метод вызывается напрямую, а не через Spring-прокси.
Пример:
java
@Service
public class MyService {
public void nonTransactionalMethod() {
transactionalMethod(); // Транзакция НЕ будет создана
}
@Transactional
public void transactionalMethod() {
// Логика с транзакцией
}
}Решение: либо вынести транзакционный метод в отдельный сервис, либо использовать self-injection через @Autowired.

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