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

Почему многие ругают аннотацию Autowired в Spring

Autowired может вызывать проблемы из-за неявности внедрения зависимостей. Основные претензии:

  1. Тестирование - сложнее мокировать зависимости без Spring-контекста
  2. Жесткая привязка - нельзя легко заменить реализацию без изменения кода
  3. Полевое внедрение - нарушает принцип инверсии зависимостей (DIP)

Лучшие альтернативы:

java
// Конструкторное внедрение (рекомендуется)
@Service
public class UserService {
    private final UserRepository repo;
    
    public UserService(UserRepository repo) {
        this.repo = repo;
    }
}

// Сеттерное внедрение
@Autowired
public void setRepo(UserRepository repo) {
    this.repo = repo;
}

Autowired допустим для быстрого прототипирования, но в production-коде лучше использовать явное внедрение через конструктор.

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

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

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

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