1. 빈 생명주기란?
- Bean이 Spring Container에 등록되고, 소멸되는 과정
- 아래의 Life Cycle에서 초기화 콜백, 소멸전 콜백이 핵심.
- Why?
- 데이터 사용 준비 시점 확정(초기화 콜백)
- 안전한 종료 작업(소멸 콜백)
Spring Bean Life Cycle
스프링 컨테이너 생성
-> Bean 생성
-> 의존관계 주입
-> 초기화 콜백
-> Bean 사용
-> 소멸 전 콜백
-> 스프링 종료
2. 초기화 콜백
- Bean의 생성자에서 특정 동작을 수행하는데에 필요한 데이터의 준비 시점을 결정.
- Bean이 생성되고, 의존관계를 주입이 끝난 뒤에, 초기화가 시작되어야한다.
생성자 호출 시점에 초기화 작업을 진행하면, 데이터 준비가 되지 않아 null 값이 출력된다.
그렇기 때문에 여러가지 방법으로 의존관계 주입이 끝났고, 초기화를 시작하라는 초기화 콜백을 주고, 받는다.
3. 소멸 전 콜백
- 빈이 소멸되기 직전에 호출
- 외부커넥션 연결(예를 들면, DB 커넥션)을 끊거나, 하는 동작을 수행할때, 빈이 소멸되기전에 안전하게 처리해줌.
4. 콜백을 지원하는 방법들
- @PostConstruct, @PreDestroy 어노테이션
- 설정정보(Configuration)에 초기화, 종료 메서드 지정
- 인터페이스(InitializingBean, DisposableBean)