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

Какие знаешь способы инъекции в Spring

В Spring есть несколько способов внедрения зависимостей (Dependency Injection, DI):

  1. Через конструктор (рекомендуемый способ):
java
@Service
public class UserService {
    private final UserRepository repository;

    @Autowired // можно опустить начиная с Spring 4.3
    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. Прямо в поле (менее предпочтительно из-за сложности тестирования):
java
@Service
public class UserService {
    @Autowired
    private UserRepository repository;
}
  1. Через метод (любой метод с @Bean в конфигурации)
java
@Configuration
public class AppConfig {
    @Bean
    public UserRepository userRepository() {
        return new UserRepositoryImpl();
    }
}

Spring также поддерживает автоподключение по типу (byType) и по имени (byName). Начиная с Spring 4.3, аннотация @Autowired для конструктора не обязательна, если есть только один конструктор.

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

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

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

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