Встречается на 2% собеседований по Java
Как использовать конкретную реализацию Bean по условию в Spring
В Spring можно выбирать конкретную реализацию бина в runtime несколькими способами:
- @Qualifier - явное указание имени бина:
java
@Autowired
@Qualifier("specificBean")
private MyInterface bean;- @Conditional - условное создание бина на основе условий:
java
@Bean
@ConditionalOnProperty(name = "feature.enabled", havingValue = "true")
public MyInterface prodBean() {
return new ProdImpl();
}- Map инъекция - получение всех реализаций:
java
@Autowired
private Map<String, MyInterface> beans;
public MyInterface getBean(String type) {
return beans.get(type);
}- FactoryBean - сложная логика создания:
java
public class MyFactoryBean implements FactoryBean<MyInterface> {
@Override
public MyInterface getObject() {
return condition ? new ImplA() : new ImplB();
}
}Выбор зависит от сложности условий и требований к гибкости. Для простых случаев достаточно @Qualifier, для сложной логики - FactoryBean.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы