Встречается на 2% собеседований по Java
Как выбрать нужный Bean из нескольких однотипных в контексте Spring без использования @Qualifier
В Spring можно выбрать нужный Bean несколькими способами:
- По имени - использовать имя бина при инъекции через
@Resourceили@Autowired+ имя переменной должно совпадать с именем бина:
java
@Autowired
private MyService primaryService; // вызовет бин с именем primaryService- Primary аннотация - пометить один из бинов как основной:
java
@Primary
@Service
public class PrimaryService implements MyService {...}- Кастомный квалификатор - создать свою аннотацию-квалификатор:
java
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface CustomQualifier {}
@Service
@CustomQualifier
public class CustomService implements MyService {...}- Через List/Map - получить все бины одного типа:
java
@Autowired
private Map<String, MyService> services; // ключ - имя бина
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы