非常に基本的なアプリケーション コードを使用して、Spring Framework のリファレンス ドキュメントを調べています。ApplicationContext
ここまでで、XML ファイルからを作成し、いくつかの Bean をロードしました。このプロセスをよく理解していると思います。基本的な型に基づいた属性を持ついくつかの基本的な Bean をロードしましたが、それは簡単なことでした。
現在、他の Bean を属性として持つ複合 Bean に取り組んでいます。これまでのところ、Bean と内部 Bean への直接参照を使用してこれらの属性を設定できました。idref
ただし、要素を機能させようとすると( http://docs.spring.io/spring/docs/3.2.4.RELEASE/spring-framework-reference/html/beans.html#beans-idref-elementを参照) ) 次の例外が発生します。
java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [com.example.BasicBean] for property 'idRef': no matching editors or conversion strategy found
以下のコード スニペット:
アプリケーション コンテキスト XML
<?xml version="1.0" encoding="UTF-8"?>
<beans ...>
<bean id="id-bean" class="com.example.BasicBean" scope="singleton">
<property name="value" value="31"/>
</bean>
<bean id="ref-bean" class="com.example.BasicBean" scope="singleton">
<property name="value" value="37"/>
</bean>
<bean id="cb" class="com.example.CompositeBean" scope="singleton">
<property name="id" ref="id-bean"/> <!-- works -->
<property name="inner"> <!-- works -->
<bean class="com.example.BasicBean">
<property name="value" value="43"/>
</bean>
</property>
<property name="idRef"> <!-- exception thrown -->
<idref bean="ref-bean"/>
</property>
</bean>
</beans>
Java アプリ コード
public void main()
{
context = new ClassPathXmlApplicationContext("beans.xml");
CompositeBean cb = context.getBean("cb", CompositeBean.class);
}
Java Bean コード
public class CompositeBean
{
private BasicBean id;
private BasicBean idRef;
private BasicBean inner;
// Default constructor exists
// Setters, getters for each attribute exist
...
}
public class BasicBean
{
private int value;
// Default constructor exists
// Setters, getters for each attribute exist
...
}
バージョン情報: Eclipse IDE (Kepler)、Maven 3.1、Java 7 (1.7.45)、Spring 3.2.4 を使用しています。
私が間違っていることについて何か考えはありますか?