Spring抛出错误:Bean定义是抽象的


问题内容

我需要有关下一个主题的帮助。

我有一个豆的层次结构,就像这样:

<bean id="father" class="myPackage.Father" abstract="true"/>

<bean id="childA" class="myPackage.ChildA" parent="father">    
        <property name="atrib1" value="hello"></property>  
</bean>

<bean id="childB" class="myPackage.ChildB" parent="father">  
        <property name="atrib2" value="bye"></property>  
        <property name="atrib3" value="other"></property>  
</bean>

我需要创建另一个包含对抽象类的引用的bean。然后,在运行时,我将需要能够初始化TYPE“
myPackage.Father”类型的变量,并使用任何子类(多态机制)实例化该变量。我的意思是这样的:

<bean id="reference" class="myPackage.Another"> 
        <property name="atrib4" ref="father"></property>
</bean>

请注意,引用(myPackage.Another的实例)不是myPackage.Father的子类。但是在这些行中,Spring引发了下一个错误:

Bean definition is abstract

我该如何处理?

感谢您的帮助,在此先感谢!


问题答案:

首先,抽象bean与抽象类无关,它们甚至不需要映射到一个类,它们被用来对另一个bean共享的公共属性进行分组,但是您不能将抽象bean用作ref将属性连接到另一个bean。如果您的bean
myPackage.Another具有类型为myPackage.Father的引用,并且您的子bean可分配(实现的扩展)到myPackage.Father,则可以在myPackage中连接childA或childB。

 <bean id="reference" class="myPackage.Another"> 
            <property name="atrib4" ref="childA"></property>
    </bean>