Назад к вопросам
Уралсиб
Junior — Middle
66
Каким образом в Spring выбирается конкретная реализация Bean в процессе выполнения приложения?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Spring конкретная реализация Bean выбирается с помощью механизма внедрения зависимостей (Dependency Injection). Если в контексте приложения определено несколько реализаций одного интерфейса или класса, Spring использует следующие подходы для выбора нужного Bean:
- По имени Bean: можно указать конкретное имя Bean с помощью аннотации
@Qualifier. - По аннотациям: например,
@Primaryпомечает Bean как предпочтительный при автосвязывании. - По типу: если есть только одна реализация, Spring выберет её автоматически.
Пример использования @Qualifier:
@Component
public class ServiceImpl1 implements MyService { ... }
@Component
public class ServiceImpl2 implements MyService { ... }
@Component
public class Consumer {
private final MyService myService;
@Autowired
public Consumer(@Qualifier("serviceImpl1") MyService myService) {
this.myService = myService;
}
}
Если не указать @Qualifier и есть несколько реализаций, Spring выбросит исключение из-за неоднозначности. Использование @Primary на одном из Bean позволяет сделать его выбор по умолчанию.