2011-10-19 3 views
1

나는 SimpleObject 클래스왜 Spring.Net은 구성을 파싱하는 동안 객체를 인스턴스화합니까?

public class SimpleObject 
{ 
    public SimpleObject() 
    { 
     Console.WriteLine("Instantiated"); 
    } 
} 

간단한 봄 구성이 :

<object id="simpleObject" type="SpringTest.SimpleObject, SpringTest" /> 

나는 내 객체 팩토리에 전달하기 위해 컨텍스트를 얻을 수있는 구성을 구문 분석 할 때 :

_context = (IApplicationContext)ConfigurationManager.GetSection("spring/context"); 

SimpleObject이 인스턴스화되었음을 알고 있습니다. 나에게는 이상한 행동처럼 들린다. 보통이다 ? 어떻게 피할 수 있습니까? _context에 명시 적으로 요청할 때만 객체를 만들길 원합니다.

답변

0

당신이 당신을 위해 작동 구성을 발견했다이었다 ...하지만 여기의 "왜"부분에 대한 답변입니다 당신의 문제.

기본적으로 개체는 싱글 톤 범위를가집니다. Spring은 컨테이너를 만들 때 싱글 톤을 인스턴스화합니다. to the docs에 따르면 이렇게하면 구성 문제가 가능한 한 빨리 즉 컨테이너 구축 시간에 감지됩니다.

lazy-init="true"을 지정하여 개체 정의에서이 기본 동작을 재정의 할 수 있습니다. 그런 다음 싱글 톤은 컨테이너에서 처음 요청 될 때 또는 다른 객체를 생성하는 데 맨 처음 필요한 경우 만들어집니다. 당신은 또한 사용할 수 있습니다

주 ...

<objects default-lazy-init="true"> 
    <!-- no objects will be pre-instantiated... --> 
</objects> 

은 ... 컨테이너에있는 모든 개체에 대한 참으로 게으른 초기화 기본을 할 수 있습니다.

+0

자세한 답변을 주셔서 감사합니다. –

1

좋아, 나는

, 바보 같은 생각이 단순히

<object id="simpleObject" type="SpringTest.SimpleObject, SpringTest" lazy-init="true" />