我正在乱搞并尝试一些示例弹簧代码。在这个例子中,我试图创建一个字符串并在另一个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)
答案 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;
}