鉴于spring.xml的以下代码,它发现idref出了点问题...请解释一下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="triangle" class="org.koushik.javabrains.Triangle">
<property name="pointA">
<idref bean="zeroPoint"/>
</property>
<property name="pointB">
<bean class="org.koushik.javabrains.Point">
<property name="x" value="-20" />
<property name="y" value="0" />
</bean>
</property>
<property name="pointC">
<bean class="org.koushik.javabrains.Point">
<property name="x" value="20" />
<property name="y" value="0" />
</bean>
</property>
</bean>
<bean id="zeroPoint" class="org.koushik.javabrains.Point">
<property name="x" value="0" />
<property name="y" value="0" />
</bean>
<alias name="triangle" alias="triangle-alias" />
<alias name="triangle" alias="triunghi" />
</beans>
从某些来源,我发现:
<property name="pointD">
<idref bean="squarePointD"/>
</property>
等于下一个
<property name="pointD">
<value>squarePointD</value>
</property>
最佳答案
idrefs
可以视为字符串。 idref用于传递bean所引用的bean的名称(作为字符串)。在您的课程中是PointA, pointD,
等字符串吗?
由于您似乎要引用自定义类org.koushik.javabrains.Point
,因此它可能不起作用。当您要使用idref时,要设置/注入的setter或构造函数参数应为Strings。容器将在部署时验证通过idref
引用的Bean是否确实存在。否则会抛出错误。
您可以查看https://stackoverflow.com/a/18539137/668951和ref vs idref attributes in spring bean declaration以获得更多详细信息。