Spring

Расскажите про аннотации @Primary и @Qualifier.


Аннотации @Primary и @Qualifier используются в Spring Framework для разрешения конфликтов при инъекции зависимостей, когда в контексте присутствует несколько бинов, которые могут быть использованы для удовлетворения зависимости. Аннотация @Primary применяется к одному из бинов, чтобы указать, что он является предпочтительным для инъекции, если не указан явно другой квалификатор. Если у вас есть несколько бинов с одним и тем же типом и вы хотите, чтобы один из них был использован по умолчанию, вы можете пометить его аннотацией @Primary. Пример использования аннотации @Primary: @Component @Primary public class MyService implements IService { // реализация сервиса } Аннотация @Qualifier позволяет указать конкретный бин, который должен быть использован для инъекции, когда есть несколько бинов с одним и тем же типом. Вы можете создать собственные квалификаторы, аннотировав бины с помощью аннотации @Qualifier и затем использовать их для разрешения конфликтов при инъекции. Пример использования аннотации @Qualifier: @Component @Qualifier("myQualifier") public class MyService implements IService { // реализация сервиса } @Component public class MyComponent { private final IService service; public MyComponent(@Qualifier("myQualifier") IService service) { this.service = service; } // остальной код } В этом примере аннотация @Qualifier("myQualifier") указывает, что для инъекции должен использоваться бин с квалификатором "myQualifier". Аннотации @Primary и @Qualifier позволяют более точно контролировать, какие бины должны быть использованы для инъекции в зависимости от конкретной ситуации.


Копировать ссылку