2차 세미나
스프링 빈 이벤트 생명주기
스프링 빈은 스프링 컨테이너 내부에서 생성되고, 스프링이 종료되기 전까지 생명주기를 갖고 있습니다.
- 스프링 컨테이너 생성
- 스프링 빈 생성
- 의존관계 주입
- 초기화 콜백
- 사용
- 소멸 전 콜백
- 스프링 종료
빈 생성 페이즈
- Instantitaion : 스프링은 빈 객체를 초기화합니다.
- Populating Properites : 객체를 초기화 한 후,스프링은 Aware 인터페이스를 구현한 빈을 스캔하고 관련된 프로퍼티를 세팅합니다.
- Pre-Initialization : 스프링의 BeanPostProcessors가 이 페이즈에서 활용됩니다.
postProcessBeforeInitialization()
메서드들이 그들이 할 일을 합니다. 또한 @PostConstruct가 달린 메서드가 그 후에 바로 실행됩니다.
- AfterPropertiesSet : 스프링은 InitializingBean 인터페이스를 구현한 빈들의
afterPropertiesSet()
메서드들을 실행합니다.
- Custom Initialization: 스프링은 @Bean 어노테이션의 initMethod 어트리뷰트에 정의한 초기화 메서드를 트리거합니다.
- Post-Initialization : 스프링의 BeanPostProcessosr가 다시 작동됩니다. 이 단계에서
postProcessAfterInitialization()
메서드를 트리거합니다.
빈 소멸 페이즈
- Pre-Destroy : 스프링은 이 단계에서 @PreDestroy 어노테이션이 달린 메서드를 실행합니다.
- Destroy : 스프링은 DisposableBean 구현체의
destroy()
메서드를 실행합니다.
- Custom Destruction : @Bean 어노테이션의 destroyMethod 어트리뷰트에 커스텀 destruction 훅을 정의할 수 있습니다. 스프링의 마지막 단계에서 이를 실행하게 됩니다.