BeanInstantiationException:无法将类型从java.lang.String转换为必需的类型--- idref标记

时间:2010-07-13 06:03:21

标签: spring

我刚开始尝试理解 idref 标记的功能

我的配置文件粘贴在这里:

<bean id="AudioSystembean" class="com.springexample.AudioSystem">
  <property name="price" value="200"/>
</bean>

<bean id="Vehicle1" class="com.SpringExample.Vehicle1">
  <property name="vehicleType" value="CAR" />
  <property name="audioSystem" >
    <idref bean = "AudioSystembean" /> 
  </property>
</bean>

当我执行代码时,我收到的错误为:"BeanInstantiationException:Cannot convert type from java.lang.String to required type :com.SpringExampl.AudioSystem" [我不记得确切的异常 - 我在家里有代码]

如果我使用参考而不是 idref ,它可以正常使用。

我试过谷歌了解 idref ,但无法获得更多信息..

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

在Spring上下文中,<idref> is used to pass the name of the referenced bean,而不是bean本身(这是<ref>所做的)。所以在你的例子中:

<property name="audioSystem" >
   <idref bean = "AudioSystembean" /> 
</property>

audioSystem系统属性将注入AudioSystembean的名称,即字符串“AudioSystembean”。

这不是你需要的,但你需要<ref>元素,它传递对bean本身的引用。