Backend Develop/Spring Framework

[Spring]Lazy Initailization의 개념과 이해

Soondo.Kwon 2022. 1. 22. 20:23

기본적으로 Spring IOC Container는 어플리케이션을 시작할 때 모든 Bean을 초기화합니다. 이 과정에서 Bean 초기화에 실패할 수도 있는데 이로 인해 어플리케이션 시점에 장애를 사전에 발견할 수 있습니다. 반면, 어플리케이션 시작하는 과정에 모든 Bean을 초기화하는 경우, 부팅하는데 시간이 많이 걸릴 수 있다는 단점이 있습니다.

 

Lazy Initialization 활성화하는 방법

1. spring.main.lazy-initialization 설정

SpringBoot의 설정파일인 application.properties(또는 appliation.yml)에 spring.main.lazy-initailization의 값을 true로 설정하면 모든 Bean을 Lazy Initialization 적용합니다.

 

 

2. @Lazy 어노테이션 사용

Lazy Initialization을 적용하고 싶은 특정 Bean에만 적용 가능합니다.

 

Lazy Initialization의 장단점

[장점]

Lazy Initialization을 적용하면 어플리케이션이 구동될 때 생성되는 Bean의 수를 줄일 수 있으므로 부팅타임을 개선할 수 있습니다.

 

[단점]

어플리케이션 부팅 시, Load되는 Bean의 오류를 미리 발견할 수 없습니다.