Java 为什么bean id要求在我的示例中使用相同的名称?为什么bean文件在我将其值更改为bean配置文件时从不返回我的输出?
我完全是Java 为什么bean id要求在我的示例中使用相同的名称?为什么bean文件在我将其值更改为bean配置文件时从不返回我的输出?,java,spring,spring-mvc,output,Java,Spring,Spring Mvc,Output,我完全是Spring框架的初学者。我正在玩一个创建对象实例的例子。所以我需要你的帮助 看看这个例子: MainApp.java: import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp{ public static void main(Stri
Spring框架的初学者。我正在玩一个创建对象实例的例子。所以我需要你的帮助
看看这个例子:
MainApp.java
:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp{
public static void main(String[] args){
ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
HelloWorld obj1=(HelloWorld) context.getBean("helloBd2");
obj1.setMessage("fooo..");
obj1.getMessage();
HelloWorld obj2=(HelloWorld) context.getBean("helloBd2");
obj2.getMessage();
}
}
第一个问题:为什么这里bean id
需要使用相同的名称?否则会出现如下错误
好的,看看我的beans.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="helloBd2" class="HelloWorld" scope="singleton">
<property name="message" value="foo with blah blah.."/>
</bean>
</beans>
它必须假设返回我的输出为:
Message: fooo..
Message: foo with blah blah..
因为当我将我的值更改为beans.xml
时,它必须与beans配置文件一起运行,不幸的是,没有这样的事情发生!为什么?
请帮忙
谢谢你的帮助 我不知道你从哪里来的
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'helloBd1' is defined at
您的问题中没有提到helloBd1
bean
至于输出,您已经将bean声明为
<bean id="helloBd2" class="HelloWorld" scope="singleton">
是否正在检索您最初调用的同一对象
obj1.setMessage("fooo..");
大概是将消息更改为fooo..
是的,显然我明白你的意思,如果我需要从配置文件中获取该值,我需要将其范围更改为原型…..)。。是吗?@rajalala如果您不调用setMessage
,那么该值将是配置文件中的值。谢谢。。好的,如果我使用bean的相同名称id
,还有一件事。为什么会出现错误?正如您告诉我的,但很抱歉,我将其更改为helloBd1
,但helloBd2
也会出现类似的问题。你能告诉我这里出了什么问题吗?@rajalala我不清楚你指的是什么错误以及你使用的是哪个bean名称/id。您尚未声明名为helloBd1
的bean,因此如果您请求一个bean,它将失败。你能用你的新尝试和发生的错误编辑你的问题吗?哦,对不起,我的错误。。实际上,我从来没有想到我的问题是,我负担不起在bean配置文件中使用该id名称笑
<bean id="helloBd2" class="HelloWorld" scope="singleton">
HelloWorld obj1=(HelloWorld) context.getBean("helloBd2");
HelloWorld obj2=(HelloWorld) context.getBean("helloBd2");
obj1.setMessage("fooo..");