2010-07-13 40 views
1

我是新来的春天,并试图了解IDREF标签的功能BeanInstantiationException:无法从java.lang.String中转换类型所需的类型--- 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

在春天的情况下,<idref> is used to pass the name of the referenced bean,而不是豆本身(这是什么<ref>做什么)。因此,在你的例子:

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

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

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

+0

谢谢你的回复和时间skaffman。所以你说这里ideref只传递字符串,而不传递“audioSystem”属性所需的bean。你提供的链接是有用的,因为我对idref有一点理解但是不完全:(使用idref标记注入“AudioSystem”类型的bean的“audioSystem”属性是可以的:) – javanoob 2010-07-13 08:55:50

+0

@javanerd:正如我所说的,''是不是用于传递引用,你需要使用'' – skaffman 2010-07-13 09:50:09

+0

感谢您的回复,我只是阅读引用,并理解它是用来传递只有bean id字符串),而不是bean的参考 但我有一个doubt..Why会我们要检索的bean的id任何实时使用本 感谢乌拉圭回合时间skaffman – javanoob 2010-07-13 11:17:15

相关问题