Sobes.tech
Назад к вопросам
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 даёт точный контроль при необходимости выбрать конкретный бин.