2015-06-16 6 views
1

Почему я могу видеть первый конструктор, даже если я указал тип, кто-нибудь может объяснить мне, что происходит за сценой ... так как я не хочу указывать позиции индекса, которые мне нужны вызов второго конструктора на основе типа.Ambiguity Относительно Spring Constructor Injection

public class Employee { 


    String name; 
    int id; 
    public Employee(String name,int id) { 
    System.out.println("First Constrcuot "); 
    } 

    public Employee(int id,String name){ 
     System.out.println("Second Constrcuot "); 
    } 
} 

У меня есть beans.xml следующим образом:

<bean id="employee" class="com.test.di.Employee"> 
     <constructor-arg type="int"> 
      <value>10</value> 
     </constructor-arg> 
     <constructor-arg> 
      <value>100</value> 
     </constructor-arg> 
    </bean> 
+0

Вы должны указать индекс, так как даже с указанием типа оба конструктора будут считаться совпадением. Оба берут параметр 'int' и' String'. –

ответ

0

Это всегда лучше указывать точные типы данных для конструктора аргументов, чтобы избежать неоднозначностей конструктора типа впрыска. См this пример для более подробной информации

Вы можете попробовать

<bean id="employee" class="com.test.di.Employee"> 
     <constructor-arg type="int"> 
      <value>10</value> 
     </constructor-arg> 
     <constructor-arg type="java.lang.String"> 
      <value>100</value> 
     </constructor-arg> 
    </bean>