2012-12-13 9 views
4

이 코드인가?봄 오버로드 된 생성자 주입

+0

참고 - 내 대답을 삭제합니다. 스프링 문서는 http://static.springsource.org/spring/docs/3.1.3.RELEASE/spring-framework-reference/html/beans.html#beans-constructor-injection에서 오독되었습니다. 나를 위해 그것이 클래스의 첫 번째 생성자를 선택하는 것,하지만 나는 그것이 보장하고 다른 사람들이 다른 결과를 얻을 수 있다고 생각하지 않습니다. –

+0

내 WAG는 리플렉션을 사용할 때 Java가 생성자를 반환하는 순서입니다. 나는 그것을 수정하는 첫번째 것을 사용한다고 상상한다. 실제 답변을 알고 싶다면 소스를 찾아보십시오. – JustinKSU

+0

[Spring 생성자 인수 모호성] 참조 (http://stackoverflow.com/q/31728258/217324) –

답변

0

나는 그렇게 생각하지 않습니다. 인수를 입력 할 수 있습니다 (예 :

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

).이 시나리오에서는 혼동을 없앨 수 있습니다.

+0

감사. 그러나 나는 모호성을 해결할 생각이 없다. 나는이 사건을 해결하기 위해 스프링이 무엇을하는지 알고 자한다. – NINCOMPOOP

3

여기에서 첫 번째 인수는 각 메소드의 첫 번째 매개 변수와 일치하고 매개 변수가 일치합니다.

난 당신이 두 번째 생성자 사용 호출 할 경우 첫 번째 생성자를 사용

<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.

+0

두 생성자에는 두 개의 매개 변수가 있습니다. 우리가 타입을 언급하지 않는다면 봄이 어느 것이 더 좋을지 알고 싶습니까? – NINCOMPOOP

0

Spring 3.1.0에 대한 테스트에 기초하여 두 번째 생성자가 사용됩니다. 나는 왜 문서가 확실한 답을주지 않았는 지 모른다.

Bitbucket code 테스트하려면 Main 클래스를 실행하여 Triangle 개체를 만드는 데 사용할 생성자에 따라 FIRST 또는 SECOND 문자열을 출력합니다.

관련 문제