백엔드기술/스프링프레임워크
Spring boot 2.2 지연 초기화
RevFactory
2019. 10. 6. 14:52
Spring boot 2.2에 추가된 기능 중 Spring Bean 을 지연 로딩하는 Lazy Initialization이 포함되었습니다.
2.2 이전에도 Lazy로딩이 가능하기 했으나 이번 업데이트로 간편하게 설정할 수 있도록 변경되었습니다.
일반적으로는 Spring Boot 애플리케이션을 시작할때, 모든 Bean이 로딩되기 때문에 문제가 있을 경우 에러를 내고 애플리케이션이 실행되지 않습니다. 또한 모든 Bean이 로딩되는 시간이 프로젝트 초기에는 크게 문제를 못 느끼지만 프로젝트 규모가 커질 수록 애플리케이션이 무거워져 시작하는데 한참 걸리게 됩니다.
프로퍼티 설정에 아래와 같이 추가합니다.
application.yaml
spring:
main:
lazy-initialization: true
지연 초기화는 장점과 단점이 있으므로 참고하세요.
장점
- 애플리케이션 시작 시간이 단축됩니다.
- Bean 이 필요할 때까지 생성되지 않으므로 시작 시간이 아닌 런타임 시점으로 문제를 숨길 수 있습니다
단점
- Web 에서 최초 요청시 Bean 생성을 위해 HTTP 요청 대기시간이 증가합니다.
- HTTP 요청 대기시간은 로드 밸런싱 및 자동 스케일링에 부정적인 영향을 줄 수 있습니다.
- 잘못된 Bean 구성에 따른 오류를 사전에 발견하지 못합니다.
Production 환경은 대부분 무중단 배포가 가능한 환경이라 애플리케이션 시작 시간이 중요한편이 아니라서
개인적으로는 개발시점에 유용한 옵션으로 사용 될 것으로 보입니다.