【发布时间】: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