Sobes.tech
Back to questions
Junior — Middle
58

Объясните различия между ключевыми компонентами Primary и Qualifier в данных системах.

Answer from AI

sobes.tech AI

В контексте Java и, например, фреймворков типа Spring, @Primary и @Qualifier используются для разрешения неоднозначностей при внедрении зависимостей.

  • @Primary помечает один бин как основной, который будет использоваться по умолчанию, если есть несколько кандидатов одного типа.
  • @Qualifier позволяет явно указать, какой именно бин нужно внедрить, используя имя или специальный идентификатор.

Пример:

@Component
@Primary
public class ServiceA implements Service {}

@Component
@Qualifier("specialService")
public class ServiceB implements Service {}

@Autowired
private Service service; // внедрится ServiceA

@Autowired
@Qualifier("specialService")
private Service service; // внедрится ServiceB

Таким образом, @Primary задаёт предпочтительный бин по умолчанию, а @Qualifier — точечный выбор конкретного бина.