Назад к вопросам
Senior
5
Для чего нужны аннотации @Qualifier и @Primary в Spring?
Компании, где спрашивали
ИП Ганус Александр Андреевич
Ответ от нейросети
sobes.tech AI
В Spring аннотации @Qualifier и @Primary используются для разрешения неоднозначностей при внедрении зависимостей, когда в контексте существует несколько бинов одного типа.
-
@Primaryпомечает бин как основной. Если есть несколько кандидатов, Spring выберет бин с этой аннотацией по умолчанию. -
@Qualifierпозволяет явно указать, какой именно бин нужно внедрить, используя имя или специальный идентификатор.
Пример:
@Component
@Primary
public class ServiceA implements MyService {
// реализация
}
@Component
@Qualifier("specialService")
public class ServiceB implements MyService {
// другая реализация
}
@Component
public class Consumer {
private final MyService myService;
// Внедрение с использованием @Qualifier
public Consumer(@Qualifier("specialService") MyService myService) {
this.myService = myService;
}
}
Таким образом, @Primary упрощает выбор бина по умолчанию, а @Qualifier даёт точный контроль при необходимости выбрать конкретный бин.