Java Springbean编译问题

Java Springbean编译问题,java,eclipse,spring,Java,Eclipse,Spring,我正在胡闹并尝试一些示例spring代码。在这个例子中,我试图创建一个字符串并在另一个bean中使用它。另一个bean在一个类中设置字符串,然后当我调用该类时,希望它能打印出消息。但是,我收到一条错误消息。有人能告诉我这里可能出了什么问题吗 public static void main(String[] args) { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("MyConfig

我正在胡闹并尝试一些示例spring代码。在这个例子中,我试图创建一个字符串并在另一个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>
publicstaticvoidmain(字符串[]args){
ApplicationContext ApplicationContext=新类路径xmlapplicationContext(“MyConfig.xml”);
SetterMessage message=(SetterMessage)applicationContext.getBean(“setStringFromBean”);
System.out.println(message.getMessage());
}
公共类SetterMessage{
私有字符串消息=null;
/**
*获取消息。
*/
公共字符串getMessage(){
返回消息;
}
/**
*设置消息。
*/
公共无效设置消息(字符串消息){
this.message=消息;
}
}

您正在按名称查找bean,但尚未设置其名称

尝试:



我在xml文件中有一个错误的注释标记,因此它没有被正确解析

您需要创建一个构造函数来设置“message”属性,因为您间接地告诉容器在构造函数的帮助下设置“message”属性。因此,如果不创建构造函数,则无法设置“message”属性值。只需按以下步骤操作:

public SetterMessage(String message) {
    this.message = message;

}

这不可能是对的。如果xml不可解析,则会出现解析异常。ApplicationContext.getBean按名称而不是id查找,而且您没有在bean定义中指定名称。这是错误的。OP没有为
SetterMessage
bean使用
,而是使用
。这将使用setter或reflection设置
消息
。同时,他在三年前找到了解决方案并回答了自己的问题。
public SetterMessage(String message) {
    this.message = message;