Spring Bean编译问题

时间:2012-10-23 19:43:39

标签: java eclipse 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>

错误是

  

2012年10月23日下午8:36:58   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   org.springframework.beans.factory.xml.XmlBeanDefinitionReader   loadBeanDefinitions INFO:从类路径加载XML bean定义   资源[MyConfig.xml] 2012年10月23日下午8:36:58   org.springframework.beans.factory.support.DefaultListableBeanFactory   preInstantiateSingletons信息:预先实例化单例   org.springframework.beans.factory.support.DefaultListableBeanFactory@643ae941:   定义bean [defaultMessage,constructorBean,setterMessage];的根源   工厂层次结构线程“main”中的异常   org.springframework.beans.factory.NoSuchBeanDefinitionException:没有   名为'setStringFromBean'的bean定义于   org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:549)     在   org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095)     在   org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277)     在   org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)     在   org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1106)     在Main.main(Main.java:13)

3 个答案:

答案 0 :(得分:0)

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

尝试:

<bean id="setStringFromBean" name="setStringFromBean" class="SetterMessage">
  <property name="message" ref="createString" />
</bean>

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

您需要创建一个构造函数来设置&#34;消息&#34;属性,因为间接你告诉容器设置&#34;消息&#34;属性在构造函数的帮助下。所以没有创建构造函数,&#34; message&#34;属性值无法设置。请按以下步骤操作:

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

}