2010-07-13 39 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

相關問題