Аннотация @Qualifier используется для указания какой бин нужно внедрить, когда в контейнере Spring существует несколько бинов одного типа. Она работает вместе с @Autowired для явного выбора бина.
Когда у тебя есть несколько бинов, которые реализуют один и тот же интерфейс или имеют один тип, механизм автовайринга Spring не может определить, какой бин внедрить. Аннотация @Qualifier решает эту неоднозначность, явно указывая имя целевого бина.
Аннотация применяется прямо в точке внедрения, рядом с @Autowired:
@Autowired
@Qualifier("beanName")
private MyService myService;
Представь сценарий с несколькими реализациями:
@Component("emailService")@Component("smsService")Без @Qualifier Spring не может определить, какой внедрить. С ней:
@Autowired
@Qualifier("emailService")
private NotificationService notificationService;
@Qualifier когда есть несколько бинов одного типаNoUniqueBeanDefinitionException@Autowired на полях, конструкторах или сеттер-методахТы также можешь использовать аннотацию @Primary на одном бине, чтобы сделать его выбором по умолчанию, и тогда во многих случаях не понадобится @Qualifier.
Аннотация @Qualifier может использоваться независимо без @Autowired для разрешения неоднозначности бинов в Spring.
Новый — ещё не проверен сообществом
Вы