스프링 프레임워크의 핵심은 Bean Container이다.
여기에는 애플리케이션 객체가 생성되어 관리된다.
스프링 빈의 생명주기는 다음 과정을 거친다.
빈 정의
빈의 설정 정보를 XML, 자바 어노테이션, 자바 코드 ...으로 정의한다.
빈 초기화
스프링 컨테이너는 빈 정의에 따라 객체를 생성한다.
이때 @PostConstruct
어노테이션이 붙은 메소드가 있다면 객체 생성 후 바로 호출된다.
이 어노테이션은 초기화 작업에 적합하다.
객체를 생성하자 마자 호출되므로
예를 들면 리소스를 로드하거나 초기 데이터 설정 등의 작업을 수행할 때 사용된다.
빈 사용
애플리케이션의 실행 중에는 스프링 컨테이너에서 빈을 검색하여 사용한다.
빈 소멸
스프링 컨테이너 종료 시에 싱글톤 스코프에 있는 빈들은 소멸된다.
이때 @PreDestroy
어노테이션이 붙은 메소드가 있다면 빈이 소멸되기 전에 호출된다.
이는 리소스 해제나 기타 정리 작업에 적합하다고 볼 수 있다.
스프링 종료
마지막으로 스프링 컨테이너 자체가 종료된다.
@PostConstruct
와 @PreDestroy
는 스프링 빈의 생명주기 중 특정 시점에 실행되는 로직을 정의하는 데 사용되는 어노테이션이다.
@PostConstruct
는 빈이 초기화될 때 실행되며 @PreDestroy
는 빈이 소멸될 때 실행된다