【问题标题】:Why does Spring obviously merges two different beans?为什么 Spring 明显合并了两个不同的 bean?
【发布时间】:2014-09-25 10:55:01
【问题描述】:

我对 Spring 还很陌生,并且 atm 正在检查 XML 驱动的 Spring。

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

请看下面的代码:

<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。打印出其中一个列表会生成两种形状,shape1shape2... 为什么?我很困惑……

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

【问题讨论】:

  • 向我们展示更多您的代码。您如何在代码中获得shapeList1shapeList2?发布一个完整的小程序来演示这个问题。
  • 感谢您的快速反应! “你怎么……”是什么意思?

标签: java spring


【解决方案1】:

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

【讨论】:

  • 就是这样!谢谢 :) (对我自己:要学习的教训:''Static' 属性的目的和效果')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 2015-10-20
相关资源
最近更新 更多