以下のように定義された 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 つのプライベート 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
私が理解している限り、IDREF (上記の場合) の目的は、BeanPointA
が存在する (エラー チェック) ための Bean トライアングルです。PointA
そのため、IDREF 要素に Bean の名前(文字列) を指定しました。上記のエラーが発生するのはなぜですか? 名前を指定するだけ
で Bean ( ) の存在をチェックしているだけだと思っていたのに、なぜ文字列を Point に変換しようとしているのでしょうか?PointA
私は本当に混乱しています。助けてください。ありがとう。