Встречается на 2% собеседований по Java

Как выбрать нужный Bean из нескольких однотипных в контексте Spring без использования @Qualifier

В Spring можно выбрать нужный Bean несколькими способами:

  1. По имени - использовать имя бина при инъекции через @Resource или @Autowired + имя переменной должно совпадать с именем бина:
java
@Autowired
private MyService primaryService; // вызовет бин с именем primaryService
  1. Primary аннотация - пометить один из бинов как основной:
java
@Primary
@Service
public class PrimaryService implements MyService {...}
  1. Кастомный квалификатор - создать свою аннотацию-квалификатор:
java
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface CustomQualifier {}

@Service
@CustomQualifier
public class CustomService implements MyService {...}
  1. Через List/Map - получить все бины одного типа:
java
@Autowired
private Map<String, MyService> services; // ключ - имя бина
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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