@Autowired by constructor按类型查找bean。如何使用自动装配的注释将bean按名称注入构造函数

时间:2013-11-09 16:28:33

标签: spring-annotations spring-3

构造函数的

@Autowired按类型查找bean。如何使用自动装配的注释将bean按名称注入构造函数? 我有2个相同类型的bean但我需要根据bean名称将它注入另一个相同类的构造函数。我该怎么做?

XML:

 <bean id="A" class="com.Check"/>
 <bean id="B" class="com.Check"/>

爪哇:

Class C {

   private Check check;

   @Autowired
   public C(Check check){
       this.check = check
   }

  }

当我这样做时,我得到一个例外,告诉我我有2个相同类型的bean检查,但它要求只有一个这种类型的bean。如何通过构造函数注入将带有id="B"的bean注入此类C

applicationContext.xml我提到autowire="byType"。我只需要在这个特定的课程中自动装备byName所有需要通过仅限类型进行自动装配

1 个答案:

答案 0 :(得分:23)

您应该将@Qualifier注释与目标bean id一起用于构造函数参数。

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