@Autowired конструктором ищет beans по типу. Как вставить bean по имени конструктору с помощью автообновленной аннотации
@Autowired
конструктором ищет beans по типу. Как вставить bean по имени конструктору с помощью автообновленной аннотации?
У меня есть 2 beans того же типа, но мне нужно добавить его к конструктору другого же класса на основе имени bean. Как это сделать?
XML:
<bean id="A" class="com.Check"/>
<bean id="B" class="com.Check"/>
Java:
Class C {
private Check check;
@Autowired
public C(Check check){
this.check = check
}
}
Когда я это делаю, я получаю исключение, говорящее, что у меня есть 2 beans проверки того же типа, но для этого требуется только один bean этого типа. Как я могу вставить bean с помощью id="B"
в этот класс C
через впрыск конструктора?
В моем applicationContext.xml
я упомянул autowire="byType"
. Мне нужно сделать autowire byName
только в этом конкретном классе, оставив все, что нужно для автопропускания только с помощью типа
Ответы
Ответ 1
Вы должны использовать аннотацию @Qualifier с целевым идентификатором bean для параметра конструктора.
<bean id="A" class="com.Check"/>
<bean id="B" class="com.Check"/>
Class C {
private Check check;
@Autowired
public C(@Qualifier("A") Check check){ //<-- here you should provide your target bean id
this.check = check
}
}