[Spring]@Autowired 라이프사이클 이해하기

JUNYOUNG·2024년 3월 19일
0

ApplicationContext를 통해 이러한 라이프사이클은 스프링의 IoC(Inversion of Control) 컨테이너에 의해 자동으로 관리되며, 특히 AutowireCapableBeanFactory는 빈(Bean)의 자동 주입(Autowiring) 과정에서 중요한 역할을 합니다. 오늘은 @Autowired 애노테이션을 사용할 때 발생하는 라이프사이클에 대해 자세히 살펴보겠습니다.

1. 빈 생성 (Bean Creation)

빈의 생명주기는 생성 단계에서 시작됩니다. @Component, @Service, @Repository 등의 애노테이션이 붙은 클래스는 스프링에 의해 자동으로 스캔되고 빈으로 등록됩니다. 이 과정은 BeanFactory의 구현체인 AutowireCapableBeanFactory에 의해 관리됩니다.

2. 의존성 주입 (Dependency Injection)

스프링은 @Autowired 애노테이션을 통해 의존성을 자동으로 주입합니다. 이는 AutowireCapableBeanFactoryBeanPostProcessor를 사용하여 빈의 의존성을 주입하는 단계입니다. 생성된 빈 인스턴스의 필드나 메서드에 @Autowired 애노테이션이 붙어 있으면, 해당 타입에 맞는 빈을 찾아 자동으로 주입합니다.

3. 초기화 (Initialization)

모든 의존성이 주입된 후, 빈은 초기화 단계를 거칩니다. 이때 @PostConstruct 애노테이션이 붙은 메서드가 호출됩니다. AutowireCapableBeanFactory는 빈의 커스텀 초기화 메서드를 인식하고 호출하여 빈이 올바르게 초기화되도록 합니다.

4. 사용 (Usage)

이제 빈은 사용 준비가 완료되었으며, 애플리케이션의 다양한 부분에서 주입되어 사용됩니다. 이 단계에서 빈은 애플리케이션의 요청을 처리하고, 다른 빈과 상호 작용합니다.

5. 소멸 (Destruction)

애플리케이션이 종료되면, @PreDestroy 애노테이션이 붙은 소멸 메서드가 호출되며, 빈은 소멸 과정을 거칩니다. AutowireCapableBeanFactory는 빈의 DisposableBean 인터페이스나 소멸 관련 콜백 메서드를 호출하여 리소스를 정리하고, 빈을 올바르게 소멸시킵니다.

profile
Onward, Always Upward - 기록은 성장의 증거

0개의 댓글