我是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),没有任何麻烦或合并。
答案 0 :(得分:1)
shapeList是静态的;)因此引用是共享的,并且在两个类上都是相同的。