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

Распространяется ли влияние аннотации @Transactional, расположенной над методом A, на метод B, если метод B вызывается внутри метода A через объект другого класса

Нет, аннотация @Transactional не распространяется на метод B, если он вызывается внутри метода A через другой объект. Spring AOP работает через прокси-объекты, и вызовы между разными бинами не перехватываются автоматически.

Пример:

java
@Service
class ServiceA {
    @Transactional
    void methodA() {
        serviceB.methodB(); // Вызов methodB не будет в транзакции methodA
    }
}

@Service
class ServiceB {
    void methodB() {
        // Без своей аннотации @Transactional будет выполняться вне транзакции
    }
}

Чтобы methodB() выполнялся в транзакции, нужно либо:

  1. Добавить @Transactional над ним,
  2. Либо вызвать его через this.methodB() внутри одного класса (если оба метода в одном сервисе).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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