Разница между аннотацией @Qualifier и @Primary заключается в их назначении:
- @Qualifier используется для разрешения неоднозначности, когда в контексте приложения Spring присутствует несколько бинов одного типа. 1 Она позволяет указать конкретный бин для внедрения с помощью значения квалификатора. 1
- @Primary указывает бин по умолчанию, когда присутствует несколько бинов одного типа. 1 Если несколько бинов имеют право на автоматическое подключение, и ни один из них явно не указан с помощью @Qualifier, то бин, отмеченный @Primary, будет выбран по умолчанию. 1
Таким образом, @Qualifier указывает конкретный компонент для автоматического подключения, когда есть несколько кандидатов, а @Primary определяет бин по умолчанию, когда не указан квалификатор. 2