【发布时间】:2013-10-11 14:20:37
【问题描述】:
我有一个 bean,我正在尝试使用构造函数注入在 Spring 上下文中进行配置。当我为构造函数参数之一传递子类时,只有当我没有指定“类型”属性时,才会由 Spring 容器实例化 bean。有人知道出了什么问题吗?以下是更多细节。
class MyClass{
public MyClass(SomeAbstractBase absObject){
//do stuff
}
}
class ConcreteClass extends SomeAbstractBase{
//
}
Spring 配置(第一个和第二个不起作用,但使用 type 属性的第三个起作用)- 配置I-
<bean id="concreteclass"
class="ConcreteClass"/>
<bean id="myclass"
class="MyClass">
<constructor-arg type="ConcreteClass" ref="concreteclass"/>
</bean>
配置二-
<bean id="concreteclass"
class="ConcreteClass"/>
<bean id="myclass"
class="MyClass">
<constructor-arg type="SomeAbstractBase" ref="concreteclass"/>
</bean>
配置三-
<bean id="concreteclass"
class="ConcreteClass"/>
<bean id="myclass"
class="MyClass">
<constructor-arg ref="concreteclass"/>
</bean>
我在初始化时遇到以下异常-
线程“main”中的异常 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为“jedispool”的bean [cache-spring-config.xml]:无法解析匹配的构造函数 (提示:为简单参数指定索引/类型/名称参数 避免类型歧义)
为什么第一个或第二个配置都不起作用?
谢谢
【问题讨论】:
-
对于上面的示例,您使用的是静态嵌套类吗?
标签: spring