根据我的说法,只应该创建一个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/