Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么bean id要求在我的示例中使用相同的名称?为什么bean文件在我将其值更改为bean配置文件时从不返回我的输出?_Java_Spring_Spring Mvc_Output - Fatal编程技术网

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..");