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

Выполнится ли транзакция с помощью приватного метода с аннотацией Transactional

Нет, приватные методы с аннотацией @Transactional не будут работать, так как Spring AOP (который реализует транзакционность) использует проксирование. Прокси могут перехватывать вызовы только public методов.

Пример:

java
@Service
public class UserService {
    
    @Transactional
    private void updateUser() { // Не сработает!
        // логика обновления
    }
    
    public void process() {
        updateUser(); // Транзакция не начнётся
    }
}

Для работы транзакций:

  1. Метод должен быть public
  2. Вызываться извне класса (не через внутренний вызов)
  3. Лучше выносить transactional-методы в отдельный сервис
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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