java – Spring重载构造函数注入

这是代码:

public class Triangle {


private String color;
private int height;


public Triangle(String color,int height){
    this.color = color;
    this.height = height;
}

public Triangle(int height ,String color){
    this.color = color;
    this.height = height;
}

public void draw() {
    System.out.println("Triangle is drawn , +
            "color:"+color+" ,height:"+height);
}

}

Spring配置文件是:

 <bean id="triangle" class="org.tester.Triangle">
    <constructor-arg value="20" />
    <constructor-arg value="10" />
</bean>

是否有任何特定的规则来确定Spring将调用哪个构造函数?

这里,第一个参数将与每个方法的第一个参数匹配,然后匹配参数.

我建议下面的解决方案,以帮助消除歧义

如果你想调用你的第一个构造函数使用

<bean id="triangle" class="org.tester.Triangle">
<constructor-arg type="int"  value="20" />
<constructor-arg type="java.lang.String"  value="10" />
</bean>

如果你想调用你的第二个构造函数

<bean id="triangle" class="org.tester.Triangle">
    <constructor-arg type="java.lang.String"value="20" />
    <constructor-arg   type="int"  value="10" />
</bean>

这样就解决了歧义

编辑: –

请阅读有关此问题的更多信息here.

https://stackoverflow.com/questions/13864787/spring-overloaded-constructor-injection

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – Spring重载构造函数注入