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 — точечный выбор конкретного бина.