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

Какие знаешь способы решения проблемы нескольких кандидатов при внедрении зависимостей в Spring

В Spring есть несколько способов разрешения неоднозначности при внедрении зависимостей:

  1. @Primary - помечает бин как основной кандидат:
java
@Bean
@Primary
public MyService primaryService() {
    return new PrimaryService();
}
  1. @Qualifier - явное указание имени бина:
java
@Autowired
@Qualifier("secondaryService")
private MyService service;
  1. Имя поля/параметра - если имя поля совпадает с именем бина:
java
@Autowired
private MyService primaryService; // Будет внедрен бин с именем primaryService
  1. @Resource - JSR-250 аннотация для указания конкретного бина:
java
@Resource(name = "specificService")
private MyService service;
  1. Списки/Мапы - инжект всех подходящих бинов:
java
@Autowired
private List<MyService> services;

@Autowired
private Map<String, MyService> serviceMap;

Выбор способа зависит от контекста: @Primary для глобального приоритета, @Qualifier для точечного указания, списки/мапы когда нужны все реализации.

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

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

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

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