1.4.4 게으른-초기화된 bean by ys

기본적으로 ApplicationContext구현 은 초기화 프로세스의 일부로써 모든 싱글 톤 Bean을 열심히 만들고 구성합니다 . 일반적으로 구성(configuration) 또는 주변 환경의 오류가 즉시 발견되기 때문에 이 사전 인스턴스화가 바람직합니다. 이는 몇 시간 또는 며칠 후가 아니라 즉시 발견됩니다. 이 동작이 바람직하지 않은 경우, bean 정의를 lazy-initialized로 bean정의를 표시함으로써 싱글 톤 bean의 사전 인스턴스화를 막을 수 있습니다. lazy-initialized Bean은 Bean이 시작될 때가 아니라 Bean 인스턴스가 처음 요청 될 때 Bean 인스턴스를 생성하도록 IoC 컨테이너에 지시합니다.

XML에서 이 동작은 다음 예제와 같이 <bean/>요소 의 lazy-init특성에 의해 제어됩니다.

<bean id="lazy" class="com.something.ExpensiveToCreateBean" lazy-init="true"/>
<bean name="not.lazy" class="com.something.AnotherBean"/>

이전의 구성(configuration)이 ApplicationContext에 의해 소비 되었을 때 , lazybean은 ApplicationContext시작될 때 열심히 pre-instantiated 되지 않지만, not.lazybean은 열성적으로 pre-instantiated된다.

그러나 lazy-intialized bean lazy-intialized 가 되지 않은 singleton bean의 종속성 일 때, 시작시에 ApplicationContext가 lazy initilaized bean을 생성합니다. 왜냐하면 싱글 톤의 종속성을 안정시켜야하기 때문입니다. lazy-initialised bean은 not lazy-initialized인 다른 singleton bean 주입 된다. < 먼말이지! ㅜ

(The lazy-initialized bean is injected into a singleton bean elsewhere that is not lazy-initialized.)

다음 예는 <beans/>요소 의 default-lazy-init속성을 사용하여 컨테이너 레벨에서 지연 초기화를 제어 할 수도 있습니다.

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

Last updated