Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带构造函数arg重载的Spring注入问题_Java_Spring_Code Injection_Constructor Injection_Spring Bean - Fatal编程技术网

Java 带构造函数arg重载的Spring注入问题

Java 带构造函数arg重载的Spring注入问题,java,spring,code-injection,constructor-injection,spring-bean,Java,Spring,Code Injection,Constructor Injection,Spring Bean,我想问一下关于Spring构造函数注入的问题。 在这个类中,我有两个具有不同数量参数的构造函数 public class MyClassHello() { public MyClassHello(String A) { // do sth } public MyClassHello(String A, int B){ // do sth } } 如果我尝试这样注入以访问第一个构造函数,Spring将无法工作,因为存在歧义 <

我想问一下关于Spring构造函数注入的问题。 在这个类中,我有两个具有不同数量参数的构造函数

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>
我想这意味着Spring需要知道index 1参数是否存在

这与通常的情况不同,我们有两个具有相同数量参数的构造函数。这样,我可以设置类型,以便在注射时进行区分

在我的例子中,有没有强制Spring选择第一个构造函数


非常感谢

您可以使用以下名称:

<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

虽然我发现您当前的设置会导致任何歧义,但请在构造函数定义中添加一个type属性以清除任何剩余的歧义。然后你应该有@kolossus,这不会有帮助,我已经尝试过了,但仍然是相同的结果。对于两个构造函数,第一个参数都是字符串。我想问题是注入如何知道第二个参数是否存在。谢谢。我要试一试。对不起,语法错误。
<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>