我想问一下Spring Constructor Injection。 所以在类中,我有两个具有不同参数的构造函数。
public class MyClassHello() {
public MyClassHello(String A) {
// do sth
}
public MyClassHello(String A, int B){
// do sth
}
}
如果我尝试像这样注入来访问第一个构造函数,那么由于存在歧义,Spring无法工作。
<bean id="injectQuestion" class="MyClassHello">
<constructor-arg index="0" value="A String"/>
</bean>
调试代码如下:
Unsatisfied dependency expressed through constructor argument with index 1 of type [java.lang.String]: Ambiguous constructor argument types.
我认为这意味着,Spring需要知道索引1参数是否存在?
这与我们有两个具有相同数量的参数的构造函数的通常情况不同。像那样,我可以设置类型以区分注入时间。
就我而言,无论如何都要强制Spring选择第一个构造函数吗?
非常感谢!!
答案 0 :(得分:0)
您可以使用名称:
<bean id= "InjectQuestion" class = "MyClassHello">
<constructor-arg name = "A" value="A String"/>
</bean>
<bean id= "InjectQuestion" class = "MyClassHello">
<constructor-arg name = "A" value="A String"/>
<constructor-arg name = "B" value="42"/>
</bean>
请注意,声明该类的语法无效;在定义bean时,在class="..."
中你应该使用类的完全限定名称(例如packageName.subPackage.MyClassHello
而不仅仅是MyClassHello
)