【问题标题】:Spring idref not working as I thoughtSpring idref 没有像我想的那样工作
【发布时间】:2016-03-14 07:53:08
【问题描述】:

鉴于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>

【问题讨论】:

  • 这就是 idref 的工作原理。 idref 用于将 bean 属性的值设置为上下文中另一个 bean 的 bean id。它不用于将属性设置为另一个 bean 的引用,如 ref。在您希望 Spring 确保 idref actual 指向的值引用现有 bean 的 id 的情况下,它很有用。如果没有匹配的 bean,则抛出异常 id

标签: java xml spring


【解决方案1】:

idrefs 可以视为字符串。 idref 用于传递您的 bean 所引用的 bean 的名称(作为字符串)。 PointA, pointD, 等字符串在你的课堂上吗?

由于您似乎指的是自定义类org.koushik.javabrains.Point,因此它可能不起作用。当您想使用 idref 时,您正在设置/注入的 Setter 或构造函数参数应该是字符串。容器将验证通过idref 引用的bean 在部署时确实存在。否则会报错。

您可以查看https://stackoverflow.com/a/18539137/668951ref vs idref attributes in spring bean declaration 了解更多详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多