Самое простое решение - использовать @Resource
@Resource(name="bean1")
public void setBean( BeanType bean ) {
}
Кстати, @Qualifier
- это , используемый для обозначения бобов по ID для использования с @Autowired
, например,
@Autowired @Qualifier("bean1")
public void setBean( BeanType bean ) {
}
, где bean1
- идентификатор бина, который нужно ввести.
См. Руководство Spring :
При резервном совпадении имя компонента считается значением квалификатора по умолчанию. Таким образом, вы можете определить бин с идентификатором "main" вместо вложенного элемента квалификатора, что приведет к тому же результату сопоставления. Однако, хотя вы можете использовать это соглашение для обращения к определенным bean-компонентам по имени, @Autowired
в основном относится к внедрению по типу с дополнительными семантическими квалификаторами. Это означает, что значения квалификатора, даже с отступлением имени компонента, всегда имеют сужающую семантику в наборе совпадений типов; они семантически не выражают ссылку на уникальный идентификатор компонента.
и
Если вы намерены выражать инъекцию на основе аннотации по имени, не используйте в первую очередь @Autowired
, даже если технически способны ссылаться на имя компонента с помощью значений @Qualifier
. Вместо этого используйте аннотацию JSR-250 @Resource
, которая семантически определена для идентификации конкретного целевого компонента по его уникальному имени, причем объявленный тип не имеет значения для процесса сопоставления.
Я предпочитаю @Resource
, он чище (и не зависит от Spring).