Так почему же у меня могут быть два компонента одного типа, если будет введен основной компонент?
На самом деле primary
bean будет введен только , если вы не указали, какой из ваших бобов вы хотите внедрить, и используется @Primary
чтобы указать, какой bean-компонент будет внедрен, когда тип не указан .
И чтобы ответить на ваш вопрос, наличие двух бинов одного типа является распространенным способом предоставления разных реализаций, во многих случаяхмы хотим использовать два bean-компонента одного и того же bean-компонента, наиболее распространенная ситуация - когда мы хотим указать два источника данных для одного и того же приложения.
И чтобы указать, с каким из наших bean-компонентов мы хотим работать, мыиспользуйте аннотацию @Resource следующим образом:
@Resource(name="bean2")
MyType bean;
Для получения более подробной информации вы можете проверить обсуждаемые различия между @Resource
и @Autowired
.