Spring中的依赖注入

时间:2015-04-19 04:27:57

标签: spring dependency-injection

你能帮我吗? 有一个接口X. 有两个类A和B都实现了X接口。 有一个第三类P,我必须在P中注入A和B.我们将如何做到这一点?

1 个答案:

答案 0 :(得分:1)

你必须使用Qualifier。使用Qualifier,您可以指定要注入的类的实例。假设你的bean定义是这样的

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

    <bean id="beanA" class="com.example.common.InterfaceX"/>

    <bean id="beanB" class="com.example.common.InterfaceX"/>

</beans>

像这样使用@Qualifier

public class SomeRandomClass {

    @Autowired
    @Qualifier("beanA")
    private InterfaceX bean1;

    @Autowired
    @Qualifier("beanB")
    private InterfaceX bean2;

    //...
}

注意:我已根据您的术语更改了示例代码。整个过程实际上和往常一样。首先在bean配置文件中声明你的bean(这是beanA和beanB是什么),然后在你想要使用的类中@Autowired它。现在你的问题是你正在尝试注入两个相同类的bean吗?因此,为了区分这两个bean,你必须有一些方法来告诉spring哪个是@Qualifier所在的那个和哪个。当声明那些bean时你给那些bean id是对的?使用带有id的@Qualifier,您可以指定实际要注入的bean。我希望能让事情变得清晰。如果您仍然有任何困惑,请查看here