@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
   }
}