我刚开始尝试理解 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 ,但无法获得更多信息..
我在这里做错了什么?
答案 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本身的引用。