spring的构造函数arg行为......为什么遵循以下行为?

时间:2015-07-11 17:20:21

标签: java spring

Rectangle(int x, String y){
    this.x=x;
    this.y=y;
}

Rectangle(String y, int z){
    this.z=z;
    this.y=y;
}

在上面的代码中,我在xml中使用了以下内容: -

<constructor-arg type="int" value="10"/>
<constructor-arg type="java.lang.String" value="10"/>

在这种情况下工作的构造函数是第二个......为什么?春天如何决定哪一个叫

1 个答案:

答案 0 :(得分:5)

基本上会发生这种情况,因为在调用构造函数时不会考虑参数在bean配置文件中出现的顺序

要解决此问题,您可以使用索引属性指定构造函数参数索引。这是添加索引属性后的bean配置文件:

<bean id="rectangle" class="com.shape.rectangle" >
    <constructor-arg index="0" type="int" value="10"/>
    <constructor-arg index="1" type="java.lang.String" value="10"/>
</bean>