본문 바로가기

Server/Spring

[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. 컨테이너 종료

빈 객체의 소멸