鉴于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/668951ref vs idref attributes in spring bean declaration以获得更多详细信息。

08-28 01:53