Junior — Middle
62
Какие существуют методы внедрения зависимостей в рамках фреймворка Spring?
Companies where asked
Answer from AI
sobes.tech AI
В Spring существуют три основных способа внедрения зависимостей:
- Внедрение через конструктор — зависимости передаются через параметры конструктора. Это предпочтительный способ, так как позволяет создавать неизменяемые объекты и облегчает тестирование.
@Component
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
- Внедрение через сеттеры (setters) — зависимости устанавливаются через методы-сеттеры после создания объекта.
@Component
public class UserService {
private UserRepository userRepository;
@Autowired
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
- Внедрение через поля (field injection) — зависимости внедряются напрямую в поля с помощью аннотации
@Autowired.
@Component
public class UserService {
@Autowired
private UserRepository userRepository;
}
Каждый способ имеет свои плюсы и минусы, но чаще всего рекомендуют использовать внедрение через конструктор для лучшей тестируемости и безопасности.