いじり回して、サンプルのスプリングコードを試しています。この例では、文字列を作成して別の Bean 内で使用しようとしています。他の Bean がクラスに文字列を設定し、そのクラスを呼び出すと、メッセージが出力されるはずです。ただし、エラーメッセージが表示されます。誰かがここで何が間違っているのか教えてください。
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("MyConfig.xml");
SetterMessage message = (SetterMessage) applicationContext.getBean("setStringFromBean");
System.out.println(message.getMessage());
}
public class SetterMessage {
private String message = null;
/**
* Gets message.
*/
public String getMessage() {
return message;
}
/**
* Sets message.
*/
public void setMessage(String message) {
this.message = message;
}
}
<bean id="createString" class="java.lang.String">
<constructor-arg value="Hello from a bean"</constructor-arg>
</bean>
<bean id="setStringFromBean" class="SetterMessage">
<property name="message" ref="createString" />
</bean>
エラーは
2012 年 10 月 23 日 8:36:58 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh INFO: org.springframework.context.support.ClassPathXmlApplicationContext@4447393f の更新: 起動日 [Tue Oct 23 20:36:58 BST 2012]; コンテキスト階層のルート 2012 年 10 月 23 日 8:36:58 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 情報: クラスパス リソース [MyConfig.xml] から XML Bean 定義をロードしていますPM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 情報: org.springframework.beans.factory.support.DefaultListableBeanFactory@643ae941 でシングルトンを事前にインスタンス化しています: Bean を定義しています [defaultMessage,constructorBean,setterMessage]; ファクトリ階層のルート スレッド「メイン」org.springframework で例外が発生しました。