[Spring] 스프링 컨테이너와 빈 객체의 생명 주기를 알아보겠습니다.
Spring 의 생명주기를 알고자 한다면,,,
Spring의 생명주기는 스프링 컨테이너와 그 안에서 관리되고 있는 스프링 빈의 생명주기에 따릅니다. 스프링 컨테이너는 애플리케이션의 설정 정보를 바탕으로 애플리케이션에서 사용할 객체(빈)를 생성하고 관리합니다. 이 과정에서 스프링 컨테이너와 빈 객체는 각자의 생명주기를 가지며, 이 생명주기는 서로 밀접하게 연결되어 있습니다.
스프링 컨테이너의 생명주기
스프링 컨테이너의 생명주기는 크게 세 단계로 나눌 수 있습니다:
1. 컨테이너 초기화: 스프링 컨테이너를 생성하고 설정 파일 또는 클래스에서 정의된 빈들을 초기화합니다.
2. 컨테이너 사용: 애플리케이션이 실행되는 동안, 컨테이너는 빈을 제공하고, 빈은 필요한 작업을 수행합니다.
3. 컨테이너 종료: 애플리케이션이 종료되면, 스프링 컨테이너도 종료되며, 이와 함께 빈들도 소멸됩니다.
아래 코드는 스프링 컨테이너의 생명주기를 보여줍니다:
public class Main {
public static void main(String[] args) {
// (1) 컨테이너 초기화
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(TestConfigurer.class);
// (2) 컨테이너 사용
Product1 product1 = applicationContext.getBean("product1", Product1.class);
Product2 product2 = applicationContext.getBean("product2", Product2.class);
--- 생략 ---
// (3) 컨테이너 종료
applicationContext.close();
}
}
스프링 빈 객체의 생명주기
스프링 컨테이너 내에서 관리되는 스프링 빈 객체는 다음과 같은 생명주기를 가집니다 :
1. 빈 객체 생성: 컨테이너 초기화 시점에 빈 객체가 생성됩니다. 이 단계에서 빈은 아직 다른 빈과의 의존 관계가 설정되지 않은 상태입니다.
2. 의존 관계 주입: 빈 객체가 생성된 후, 스프링 컨테이너는 빈 객체 간의 의존 관계를 설정합니다. 이 과정은 주로 생성자 주입, 세터 주입 등을 통해 이루어집니다.
3. 빈 객체의 초기화: 빈 객체가 생성되고 의존 관계가 주입된 후, 빈의 초기화 작업이 수행됩니다. 이 단계에서는 빈이 사용될 준비를 완료하게 됩니다.
4. 빈 객체의 소멸: 스프링 컨테이너가 종료되면서 빈 객체도 소멸됩니다. 이 단계에서는 빈 객체의 자원 해제 작업이 이루어집니다.
스프링 컨테이너와 빈 객체의 생명주기 관계
스프링 컨테이너의 생성과 종료는 빈 객체들의 생명주기와 밀접하게 연결되어 있습니다. 컨테이너가 초기화될 때 빈 객체들이 생성되고 초기화되며, 컨테이너가 종료될 때 빈 객체들도 소멸됩니다.
1. 컨테이너 초기화
빈 객체의 생성
의존 관계 주입
빈 객체의 초기화
2. 컨테이너 사용
애플리케이션이 실행되는 동안 빈 객체들이 사용
3. 컨테이너 종료
빈 객체의 소멸