2014-12-21 1 views
1

나는 스프링 인스턴스화에 대한 쿼리를 가지고있다.봄 및 정적 팩토리에서 Bean 인스턴스화에 대한 쿼리

는 봄 참조 문서에 따르면, 섹션 '빈을 인스턴스화에 "용기 자체가 직접 new 연산자를 사용, 반 성적 자바 코드에 다소 해당 생성자를 호출하여 빈을 생성",

이 언급되어있다 "

이것은 스프링 컨테이너가 리플렉션을 사용하여 beans를 생성한다는 것을 의미합니다. 몇 가지 시나리오에서 컨테이너는 또한 클래스의 정적 팩토리 메소드를 사용하여 bean을 만듭니다. 컨테이너가 정적 팩토리 메소드를 사용하는 유일한 경우는 " 컨스트럭터는 프라이빗입니다. "

So 내 의심은 컨테이너가 리플렉션을 사용하여 객체를 생성하기 때문에 개인 생성자 클래스의 객체도 생성 할 수 있어야합니다. 컨테이너가 정적 팩토리 메소드에 의존해야하는 이유는 무엇입니까? 또는 빈을 만들기 위해 정적 팩토리 메서드를 호출하는 다른 용도가 있습니까?

미리 감사드립니다. 나에게 필요한 기본적인 이해가 있다면 친절하게 제안하십시오.

답변

0

네 그렇습니다. 구성에서 bean을 정의하는 동안 올바른 인수를 제공하면 Spring은 개인 생성자를 호출 할 수 있습니다. 하지만 제 콩팥이 인스턴스화 될 의도가 없다면 왜 그렇게 생각하니?

정적 메서드 또는 단일 등으로 도우미 클래스가있는 경우에만 말할 수 있습니다. 따라서이 클래스를 인스턴스화하는 것은 의미가 없습니다.

하지만 여러분의 경우에는 factory이고 정적 메소드 (정적 메소드 액세스/필드는 반드시 필드/메소드에 액세스 할 Object가 필요하지 않음)를 호출하여 객체를 다시 가져올 수 있습니다. getShape라고 말하면 모양이 달라질 수 있습니다. 제공 할 수있는 매개 변수를 기반으로합니다.

+0

나는 그것을 얻었다. 많은 감사 – Anveshan

0

때때로 Spring 용으로 설계되지 않은 클래스를 사용해야하며 정적 팩토리 메소드를 통해 인스턴스화해야하며 Spring은 이러한 가능성을 제공합니다.

+0

나는 그것을 얻었다. 많은 감사 – Anveshan

관련 문제