我有两个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>
答案 0 :(得分:0)
我认为那是因为那两个com.PermanentEmployee
和com.ContractEmployee
正在实施另一个界面,例如com.Employee
?
这样,Spring会认识到那些相同的类型,并且不能选择Spring必须自动连接到bean中的bean。
因此,在这种情况下,您可能需要添加byName
,而不是byType
。
如果使用@Autowired
注释或@Resource
注释更改这些注入,则可以使用@Qualifier
(对于Autowired)或Resource注释的name属性来指定bean名称。