J
Java Машина
@java_mashina247 подп.
69просмотров
27.9%от подписчиков
12 сентября 2024 г.
Score: 76
В Spring аннотации @Primary и @Qualifier используются для разрешения неоднозначности при внедрении зависимостей (Dependency Injection), когда имеется несколько бинов одного типа. Они позволяют указать, какой именно бин должен быть использован в тех или иных случаях. 1⃣ Аннотация @Primary Аннотация @Primary используется, чтобы указать основной (по умолчанию) бин среди нескольких возможных кандидатов одного типа. Когда Spring находит несколько бинов одного типа, помеченный @Primary бин будет использован по умолчанию, если не указано иное. @Component public class FirstService implements MyService { } @Component @Primary public class SecondService implements MyService { } В этом примере два класса, FirstService и SecondService, реализуют интерфейс MyService. При внедрении через @Autowired Spring по умолчанию будет использовать SecondService, так как он помечен аннотацией @Primary. 2⃣ Аннотация @Qualifier Аннотация @Qualifier позволяет точно указать, какой именно бин следует использовать, даже если он не является основным (@Primary). Она применяется вместе с @Autowired или другими механизмами инъекции для явного указания нужного бина. @Component("firstService") public class FirstService implements MyService { } @Component("secondService") public class SecondService implements MyService { } Чтобы явно указать, какой из этих бинов должен быть использован, используется аннотация @Qualifier @Autowired @Qualifier("firstService") private MyService myService; // Внедрит FirstService ⚠ Выводы: ✅ @Primary: подходит, если у вас есть несколько бинов одного типа, и один из них должен быть используем по умолчанию в большинстве случаев. ✅ @Qualifier: используется для более точного контроля, когда вам нужно выбрать конкретный бин среди нескольких, особенно в случаях, когда использование бина по умолчанию (с @Primary) не подходит.
69
просмотров
1845
символов
Нет
эмодзи
Нет
медиа

Другие посты @java_mashina

Все посты канала →