[Spring] Spring Bean의 초기화

호두마루·2023년 10월 16일
0

Spring

목록 보기
10/17
post-thumbnail

Spring Bean의 생명주기 중 초기화에 대해 정리해보려고 한다.

1) 즉시 초기화

Spring Bean의 기본값은 즉시 초기화이다.
기본적으로 Spring 컨테이너가 동작할 때, Bean을 초기화시킨다.


위에서 볼 수 있듯이 Bean을 로드하지 않고 Bean에서 메소드를 호출하지 않더라도 Bean이 자동으로 초기화되고 있다.

특징

이러한 Spring을 특성 덕분에 어플리케이션에 오류가 있다면 우리는 어플리케이션을 실행시킴과 동시에 오류를 발견할 수 있다는 장점이 있다.
하지만 어플리케이션이 무겁다면 초기화할 때 많은 시간이 걸릴 것이다.


2) 지연 초기화

하지만 우리는 특정 어노테이션을 사용하면 초기화 여부를 선택해줄 수도 있다.
이 때 사용하는 것이 @Lazy이다.
@Lazy를 사용하면 자동 초기화가 이루어지지 않는다.

어플리케이션을 동작시켰음에도 콘솔창에 아무일도 이루어지지 않는다는 것을 확인할 수 있다.

그렇다면 @Lazy를 import한 Bean은 언제 초기화될까?

정답은 사용자가 해당 Bean을 사용할 때이다.

위와 같이 사용되기 바로 전에 로드되어 표시된다.

즉, @Lazy는 해당 어노테이션을 import한 Bean을 참조하거나 사용하려 할 때만 로드시키는 기능을 한다.

특징

@Lazy어노테이션은 @Component, @Bean, @Configuration 어디든 사용이 가능하다.

그러나 @Lazy 사용은 그다지 추천하는 바는 아니고, 복잡한 초기화 논리를 가졌을 때 가끔 사용해주면 된다.

@Lazy 어노테이션을 가진 Bean에 오류가 발생한다면 어플리케이션 실행 시에는 전혀 알 수 없으며, 추후 Runtime 에러로 표시됨도 주의하자.

0개의 댓글