java - 以下案例中将创建多少个 spring beans

标签 java spring

根据我的说法,只应该创建一个bean,因为我已经将范围指定为单例,但输出却说的是不同的事情。任何人都可以向我详细说明以下内容吗?

HelloWorld.java

public class HelloWorld {
    private String message;

    public HelloWorld(String message) {
        System.out.println(message+ "bean created");
        this.message=message;
    }

    public void getMessage() {
        System.out.println("Your Message : " + message);
   }
}

Main.java

public class Main {
    public  static void main(String args[]) {

        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
        obj.getMessage();

        HelloWorld obj2 = (HelloWorld) context.getBean("helloWorld2");
        obj2.getMessage();
        obj.getMessage();

        System.out.println(obj.hashCode());
        System.out.println(obj.hashCode());
    }
}

beans.xml

<bean id = "helloWorld" class = "HelloWorld" scope="singleton">
    <!--<property name = "message" value = "Hello World!"/>-->
    <constructor-arg value="HelloWorld1"/>
</bean>

<bean id = "helloWorld2" class = "HelloWorld" scope="singleton">
    <!--<property name = "message" value = "Hello World2!"/>-->
    <constructor-arg value="HelloWorld2"/>
</bean>

输出:

HelloWorld1bean created
HelloWorld2bean created
Your Message : HelloWorld1
Your Message : HelloWorld2
Your Message : HelloWorld1
935148943
935148943

最佳答案

肯定是2 尝试打印 obj2.hashcode。不是 obj 哈希码

关于java - 以下案例中将创建多少个 spring beans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45372824/

相关文章:

java - 更改图形 drawString 颜色

Java限制随机 double

java - 在递归方法中返回错误的计数

java - Oracle db 是否能够比较不同时区的时间戳?

java - 来自另一个属性的属性占位符位置

java - 使用 Java 使用 GSON 反序列化 JSON 响应

java - 在不使用策略文件的情况下以编程方式授予权限

java - 如何解决来自2个不同jar的相同类之间的冲突?

java - Spring 框架: Sending E-Mails that are generated from JSPs

Spring DM 与 Spring 4.* 的兼容性