为什么Spring显然会合并两个不同的bean?

时间:2014-09-25 10:55:01

标签: java spring

我是Spring的新手,并且正在检查XML驱动的Spring。

现在我的问题是Spring以某种方式合并来自同一个bean类的两个不同的bean对象。它将它们视为一个单一的对象。

请查看以下代码:

<bean id="shapeList1" class="coreservlets.ShapeListMaker" >
    <constructor-arg index="0">
        <list>
        <ref local="shape1" /> 
        </list>
    </constructor-arg>
</bean>
<bean id="shapeList2" class="coreservlets.ShapeListMaker"  >
    <constructor-arg>
        <ref local="shape2" />
    </constructor-arg>
</bean>

......相关课程:

public class ShapeListMaker {

public ShapeListMaker (List<Shape> shapes) {
    shapelist = shapes;
}

public ShapeListMaker (Shape shape) {
    shapelist.add(shape);
}

private static List<Shape> shapelist = new ArrayList<>();

比较两个对象(shapeList1 == shapeList2)返回 true 。打印出其中一个列表会产生两种形状, shape1 shape2 ......为什么?我很困惑......

通过相同的xml文件,我以相同的方式创建了一些其他bean对象(形状 bean),没有任何麻烦或合并。

1 个答案:

答案 0 :(得分:1)

shapeList是静态的;)因此引用是共享的,并且在两个类上都是相同的。