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

Будет ли выполнена транзакция, если нетранзакционный метод вызывает транзакционный метод в Spring

В Spring транзакции работают через AOP-прокси, поэтому вызов транзакционного метода из того же класса (внутренний вызов) не будет обработан прокси. Транзакция не начнется, если метод вызывается напрямую, а не через Spring-прокси.

Пример:

java
@Service
public class MyService {
    
    public void nonTransactionalMethod() {
        transactionalMethod(); // Транзакция НЕ будет создана
    }

    @Transactional
    public void transactionalMethod() {
        // Логика с транзакцией
    }
}

Решение: либо вынести транзакционный метод в отдельный сервис, либо использовать self-injection через @Autowired.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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