gpt4 book ai didi

Spring IDREF 使用

转载 作者:IT老高 更新时间:2023-10-28 13:45:19 31 4
gpt4 key购买 nike

我有一个 spring.xml 定义如下:

<?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.tutorial.spring.Triangle">
<property name="pointA">
<idref bean="pointA"/>
</property>
<property name="pointB" ref="pointB"/>
<property name="pointC" ref="pointC"/>
</bean>
<bean id="pointA" class="org.tutorial.spring.Point">
<property name="x" value="0"/>
<property name="y" value="0"/>
</bean>
<bean id="pointB" class="org.tutorial.spring.Point">
<property name="x" value="100"/>
<property name="y" value="200"/>
</bean>
<bean id="pointC" class="org.tutorial.spring.Point">
<property name="x" value="-100"/>
<property name="y" value="-200"/>
</bean>
</beans>

Point 类基本上是一个有 2 个私有(private) int 成员的类。我的问题是我在 IDREF 上收到如下错误:

Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.String' to required type 'org.tutorial.spring.Point' for property 'pointA'; 
nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.tutorial.spring.Point] for property 'pointA': no matching editors or conversion strategy found

据我了解,bean PointA 的IDREF(在上述情况下)的目的是bean三角形存在(错误检查)。所以我确实在 IDREF 元素中提供了 bean PointA(string) 的名称。为什么我会收到上述错误?

当我认为它只是通过提供其名称来检查 bean (PointA) 的存在时,为什么它试图将字符串转换为 Point?

我真的很困惑。请帮忙。谢谢。

最佳答案

idref用于传递一个bean(即String)的名称(标识符)

<idref bean="pointA">与字符串值 pointA 完全相同,除了如果没有定义这样的 bean,Spring 会报错。

the Spring documentation了解详情。

要传递实际的 bean,只需使用 ref ,就像你对 pointB 所做的一样和 pointC .

关于Spring IDREF 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14607142/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com