스프링 Bean의 생명주기
스프링에서 Bean은 애플리케이션의 핵심 구성요소 중 하나입니다. Bean은 스프링 컨테이너에서 관리되는 객체를 의미하며, 애플리케이션에서 사용되는 다양한 기능들을 수행합니다. Bean의 생명주기는 Bean의 생성부터 소멸까지의 과정을 의미합니다.
스프링에서 Bean의 생명주기는 크게 세 가지 단계로 나눌 수 있습니다. 첫째, Bean의 인스턴스 생성 단계입니다. Bean은 스프링 컨테이너에서 빈으로 등록되면, 해당 빈의 클래스의 인스턴스를 생성합니다. 이 때, 스프링 컨테이너는 Bean의 클래스를 찾아서 인스턴스를 생성합니다.
둘째, Bean의 의존성 주입(Dependency Injection) 단계입니다. Bean의 생성이 완료되면, 해당 Bean이 의존하는 다른 Bean들이 주입됩니다. 이 때, 스프링은 설정 파일에서 빈 간의 의존 관계를 확인하고, 해당 빈이 의존하는 다른 빈을 찾아서 주입합니다.
셋째, Bean의 초기화(Initialization)와 소멸(Destruction) 단계입니다. Bean의 인스턴스 생성과 의존성 주입이 완료된 후에는, 스프링 컨테이너는 빈을 초기화하고, 필요에 따라 소멸합니다. 이 때, 빈의 초기화 작업은 InitializingBean 인터페이스의 afterPropertiesSet() 메서드나, @PostConstruct 어노테이션을 이용하여 구현할 수 있습니다. 또한, 빈의 소멸 작업은 DisposableBean 인터페이스의 destroy() 메서드나, @PreDestroy 어노테이션을 이용하여 구현할 수 있습니다.
이처럼, 스프링 Bean의 생명주기는 빈의 인스턴스 생성, 의존성 주입, 초기화, 소멸의 과정으로 이루어집니다. 스프링은 이러한 빈의 생명주기를 관리하여, Bean이 애플리케이션에서 적절하게 사용될 수 있도록 합니다.
간단 요약 : 스프링 Bean의 생명주기는 객체 생성, 초기화, 사용 및 소멸로 구성됩니다. 스프링은 Bean이 생성될 때 적절한 초기화 메서드를 호출하고, Bean을 소멸하기 전에 적절한 종료 메서드를 호출합니다. 또한, 스프링은 Bean의 스코프에 따라 다른 생명주기를 가지며, Singleton, Prototype 등의 스코프가 있습니다.