13. Расскажите про аннотации @Primary и @Qualifier.
UNKNOWNМы используем @Primary, чтобы отдавать предпочтение бину, когда есть несколько бинов одного типа. Эта аннотация полезна, когда мы хотим указать, какой компонент определенного типа должен внедряться по умолчанию.
@Configurationpublic class Config { @Bean public Employee JohnEmployee() { return new Employee(\"John\"); } @Bean @Primary public Employee TonyEmployee() { return new Employee(\"Tony\"); }}
или с аннотацией @Component
@Componentpublic class DepartmentManager implements Manager { @Override public String getManagerName() { return \"Department manager\"; }}@Component@Primarypublic class GeneralManager implements Manager { @Override public String getManagerName() { return \"General manager\"; }}
Теперь, где будут требоваться бины типа Employee и Manager будут созданы и внедрены TonyEmployee и GeneralManager.
Когда есть несколько бинов одного типа, подходящих для внедрения, аннотация @Qualifier позволяет указать в качестве аргумента имя конкретного бина, который следует внедрить.
Стоит отметить, что если присутствуют аннотации @Qualifier и @Primary, то аннотация @Qualifier будет иметь приоритет. По сути, @Primary определяет значение по умолчанию, в то время как @Qualifier более специфичен.
Предыдущий вопрос: 12. Можно ли вставить бин в статическое поле? Почему?
Следующий вопрос: 14. Как заинжектить примитив?
Все вопросы по теме: список
Все темы: список
Вопросы/замечания/предложения/нашли ошибку: напишите мне