1. Lazy-initialized Beans
기본 동작
- ApplicationContext는 기본적으로 초기화 과정에서 모든 싱글톤 빈을 즉시 생성하고 설정합니다.
- 즉시 인스턴스화는 설정 오류나 환경 문제가 컴파일 타임에 조기에 발견됩니다.
- 오류가 서버 기동중에 발견되는 것을 방지할 수 있습니다.
지연 초기화(Lazy Initialization)
- 이러한 기본 동작을 원치 않을 때, 빈 정의 단계에서 지연 초기화로 표시하여 싱글톤 빈의 사전 인스턴스화를 방지할 수 있습니다.
- IoC 컨테이너에게 지연 초기화 된 빈은 즉시 생성이 아닌 첫 요청시에 생성하도록 지시합니다.
XML에서의 설정
- XML에서 이 동작은 <bean/> 요소의 lazy-init 속성으로 제어됩니다.
<bean id="lazy" class="com.something.ExpensiveToCreateBean" lazy-init="true"/>
<bean name="not.lazy" class="com.something.AnotherBean"/>
예외 사항
지연 초기화 된 빈이 지연 초기화되지 않은 싱글톤 빈의 종속성인 경우
- 해당 싱글톤 빈의 종속성을 만족시키기 위해, ApplicationContext는 지연 초기화 된 빈을 즉시 생성합니다.
컨테이너 수준에서의 지연 초기화
- 요소의 default-lazy-init 속성을 사용하여 컨테이너 수준에서 지연 초기화를 제어할 수 있습니다.
<beans default-lazy-init="true">
<!-- no beans will be pre-instantiated... -->
</beans>
- 이 설정을 사용하면 어떠한 빈도 사전에 인스턴스화되지 않습니다.
- 필요할 때만 특정 빈을 초기화하여 리소스를 절약하고 시작 시간을 단축시킬 수 있습니다.
출처
'Spring > Spring' 카테고리의 다른 글
[Spring][Integration] 1. Task Execution: @Async (0) | 2023.10.16 |
---|---|
[Spring][Core] 2-8. Bean: Customizing the Nature of a Bean (0) | 2023.10.14 |
[Spring][Core] 2-6. Bean: Autowiring Collaborators (0) | 2023.10.14 |
[Spring][Core] 2-5. Bean: Dependency Injection (0) | 2023.10.14 |
[Spring][Core] 2-4. Bean: Bean Scopes (0) | 2023.10.14 |