0

いじり回して、サンプルのスプリングコードを試しています。この例では、文字列を作成して別の 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 で例外が発生しました。

4

3 に答える 3

1

名前で Bean を検索していますが、その名前を設定していません。

試す:

<bean id="setStringFromBean" name="setStringFromBean" class="SetterMessage">
  <property name="message" ref="createString" />
</bean>
于 2012-10-23T19:51:46.430 に答える
0

xml ファイルに間違ったコメント タグがあり、適切に解析されていませんでした。

于 2012-10-23T20:25:29.140 に答える