Spring Bean의 데이터를 사용하는 것은 의존관계 주입이 끝난 이후에야 가능하다.
그렇다면 개발자는 의존관계 주입이 완료된 시점을 어떻게 알 수 있을까?
Spring Bean은 다음과같은 생명주기를 가진다.
Spring 컨테이너 생성 Spring Bean 생성 의존관계 주입 초기화 콜백 Spring Bean 사용 소멸 전 콜백 Spring 종료
Spring은 의존관계 주입이 완료되면 Bean에게 초기화 시점을 알려준다.
또한, Spring 컨테이너가 종료되기 직전 소멸 콜백또한 알려줌으로서 안전하게 종료할 수 있게된다.
콜백을 지원하는 가장 대표적인 방식인 @PostConstruct
와 @PreDestroy
에 대해 알아보자.
@PostConstruct
를 통해 Bean의 초기화 시점을 알 수 있다.
아래 코드를 살펴보자.
@PostConstruct
가 붙은 메서드는 의존관계 주입 후, 즉 생성자 호출 이후에 실행되어야한다.
Bean 설정 정보 코드와 실행 결과를 살펴보자.
올바른 순서로 출력되었음을 확인할 수 있고, 이를 통해 데이터를 사용 가능한 시점을 알 수 있다.
@PreDestroy
를 통해 Bean의 소멸 직전 시점을 알 수 있다.
위에서 살펴본 코드를 실행할 경우, @PreDestroy
가 붙은 메서드는 가장 마지막에 실행되어야한다.
우와..