java - Spring 抛出错误 : Bean definition is abstract

标签 java spring spring-mvc spring-3

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

我有一个 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。然后在运行时,我需要能够初始化一个类型为“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 永远不会实例化为对象,它们仅以定义的形式存在。

来自文档:http://docs.spring.io/spring/docs/3.0.x/reference/beans.html 父bean不能自己实例化,因为它是不完整的,它也被显式标记为abstract。当定义像这样抽象时,它只能用作纯模板 bean 定义,用作子定义的父定义。尝试单独使用这样的抽象父 bean,通过将其作为另一个 bean 的 ref 属性引用或使用父 bean id 进行显式 getBean() 调用,返回错误。同样,容器的内部 preInstantiateSingletons() 方法会忽略定义为抽象的 bean 定义。

你的情况

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

指的是导致问题的定义为抽象的 bean。

关于java - Spring 抛出错误 : Bean definition is abstract,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19094782/

相关文章:

java - 使用 Spring MVC、JSR 303 注释将 binidng 表单转换为 bean 时出现异常

javascript - Spring MVC - 使用 Japascript 对象设置\填充 JSTL\JSP 对象的内容

java - 具有一些共同属性但没有继承的两个类

java - 添加一个在 JSplitpane 和 JPanel 之间拆分的 JScrollpane?

Java Servlet session 显示空值

java - Spring-Boot 向 REST 服务添加基本的 http 安全性

java.lang.ArrayStoreException : sun. 反射.annotation.TypeNotPresentExceptionProxy

java - 如何配置 Spring 集成 FTP 进行动态入站?

java - 如何在spring集成测试中上传文件并将其设置为参数?

http - 如何在没有提供 Accept header 的情况下在 Spring MVC 中设置默认内容类型?