2012-06-27 4 views
0

프로토 타입으로 범위를 지정할 개체가 있고 런타임에 생성자 인수 값이 결정됩니다. 이 프로토 타입의 인스턴스를 생성하려면 정적 팩토리 메서드를 사용해야한다. 사실입니까? 문서에서 어디에서 사실을 알 수 있습니까? 나는 런타임에 결정된 생성자 값이나 참조를 논의하는 것을 찾을 수 없었다. 모든 샘플은 시작시 명확하게 정의 된 값을가집니다.정적 팩토리 메소드는 Spring을 사용하여 프로토 타입의 생성자에 런타임 값을 전달하는 유일한 방법입니까?

답변

2

는 기본적으로 어떤 일을해야하는 것은 :

applicationContext.getBean("beanName", new Object[]{arg1, arg2, arg3}); 

<bean id="beanName" class="my.package.className" scope="prototype"> 
    <constructor-arg index="0" type="java.lang.String" value=""/> 
    //etc 
</bean> 

수업 그렇지 않으면 스프링 무료이며 당신이 ApplicationContext의 의존성이 그들을 비료 것을 원하지 않는 경우, 공장 방법이 바람직 할 수도있다.

메서드 대체를 사용하여 스프링 종속 코드를 분리 할 수도 있습니다.

+0

args 매개 변수에 대한이 메서드에 대한 설명서에서 "이 메서드는 명시 적 인수를 정적 팩터 리 메서드로 사용하여 프로토 타입을 만드는 경우 사용할 인수가 있으므로이 메서드가 매우 흥미 롭습니다. 어떤 인수에도 null이 아닌 args 값을 사용하는 것은 무효합니다. 다른 경우. " 그래서 getBean에 대한 호출은 정적 팩토리 메소드를 사용하여 생성 된 객체에만 사용될 수 있다고 생각하게되었습니다. –

+1

그래, 나는 자바 문서의 매개 변수 섹션이 가장 꼼꼼하게 유지 된 것들이 아닐 것 같아 :) 메소드 설명은 생성자 args 또는 팩토리 메소드 args가 될 수 있다고 말합니다 : "명시 적 * 생성자 인수를 지정할 수 있습니다 */팩토리 메소드 인수를 사용하여 bean 정의에서 지정된 기본 인수 (있는 경우)를 대체합니다. " – Affe

+0

추가 정보 주셔서 감사합니다 ... 난 그냥이 시점에서 작동 기쁩니다 :) –