如何使用byType自动装配注入子依赖?

时间:2014-02-22 12:48:44

标签: java spring dependency-injection

我有两个Employee类的子类(PermanentEmployee和ContractEmployee)。

我希望spring按类型在TextEditor1下注入依赖项。除此之外,我想在TextEditor1下注入PermanentEmployee depndency。

同样希望在TextEditor2下注入contractEmployee依赖项。应该注射休息 自动按类型?

       <bean id="textEditor1" class="com.TextEditor"   autowire="byType">
           <property name="employee" ref="permanentEmployee" />
       </bean>

        <bean id="textEditor2" class="com.TextEditor"   autowire="byType">
           <property name="employee" ref="contractEmployee" />
       </bean>


        <bean id="permanentEmployee" class="com.PermanentEmployee" >
       </bean>

        <bean id="contractEmployee" class="com.ContractEmployee">
       </bean>

但我收到错误Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: saying two match are found

更新: - 我也在下面试过,但它无法正常工作

       <bean id="textEditor1" class="com.TextEditor"   autowire="byType">
         <qualifier type="permanentEmployee"/>
       </bean>

1 个答案:

答案 0 :(得分:0)

我认为那是因为那两个com.PermanentEmployeecom.ContractEmployee正在实施另一个界面,例如com.Employee

这样,Spring会认识到那些相同的类型,并且不能选择Spring必须自动连接到bean中的bean。

因此,在这种情况下,您可能需要添加byName,而不是byType

如果使用@Autowired注释或@Resource注释更改这些注入,则可以使用@Qualifier(对于Autowired)或Resource注释的name属性来指定bean名称。