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

Как лучше внедрять бин в Spring

В Spring есть несколько способов внедрения бинов:

  1. Через конструктор (рекомендуется)
    Самый предпочтительный способ, так как обеспечивает неизменяемость и легкое тестирование.
java
@Service
public class UserService {
    private final UserRepository repository;
    
    @Autowired
    public UserService(UserRepository repository) {
        this.repository = repository;
    }
}
  1. Через сеттер
    Подходит для опциональных зависимостей.
java
@Service
public class UserService {
    private UserRepository repository;
    
    @Autowired
    public void setRepository(UserRepository repository) {
        this.repository = repository;
    }
}
  1. Через поле (field injection)
    Не рекомендуется из-за сложностей с тестированием и нарушением инкапсуляции.
java
@Service
public class UserService {
    @Autowired
    private UserRepository repository;
}

Лучшие практики:

  • Используйте конструкторное внедрение для обязательных зависимостей
  • Для опциональных - сеттеры или @Autowired(required = false)
  • Избегайте field injection в production коде
  • В Spring 4.3+ @Autowired на конструкторе можно опустить, если только один конструктор
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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