在Spring配置文件中,我为同一类创建了两个bean,即

<bean id="emp1" class="Employee">
    <property name="age" value="10"></property>
</bean>

<bean id="emp2" class="Employee">
    <property name="age" value="15"></property>
</bean>


默认情况下,两者的范围都为“单个”,但是当我打印Employee对象时,它显示了两个不同的对象。这怎么可能?我的意思是
如果bean作用域是singleton,那么它如何创建两个不同的对象?

最佳答案

它应该返回2名员工。
在春季,单例的含义略有不同-并不是要保证每个类有1个实例。
这只是意味着每次调用“ context.getBean(“ emp1”)”时,您将获得相同的对象,而不是“ prototype”,这意味着每次调用context.getBean(“ emp1”)时将获得不同的实例。

尝试这个

Object x1=context.getBean("emp1");
Object x2=context.getBean("emp1");


如果“ emp1”是单例,您将获得相同的参考。如果是原型,您将获得两个单独的实例。

10-05 18:22