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

Почему @Transactional компонент с private методом не создастся

При использовании @Transactional на private методе Spring не сможет создать прокси для этого метода, так как проксирование работает через создание подкласса (CGLIB) или через интерфейсы (JDK Dynamic Proxy). Private методы не могут быть переопределены или вызваны извне класса, поэтому Spring не может применить к ним транзакционную логику.

Пример:

java
@Service
public class UserService {
    @Transactional
    private void updateUser() { // Не сработает!
        // логика
    }
}

Решение — сделать метод public или protected.

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

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

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

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