상세 컨텐츠

본문 제목

[Spring / Java] 스프링 빈의 생명주기

server

by 셉인 2024. 4. 15. 12:20

본문

728x90

[Spring / Java] 스프링 빈의 생명주기

빈(Bean)

스프링 프레임워크에서 빈(Bean)은 스프링 IoC(Inversion of Control) 컨테이너가 관리하는 객체를 말한다. 컨테이너 내부에서 생성되고, 스프링이 종료되기 전까지 생명주기를 갖고 있다. 스프링 빈의 생명주기는 크게 생성, 초기화, 사용, 소멸의 단계로 나뉜다. 각 단계에서 스프링은 빈의 생명주기를 관리하고 다양한 콜백 메소드를 통해 개발자가 특정 시점에 로직을 실행할 수 있게 해준다. (스프링 : 객체 생성 -> 의존관계 주입의 생명주기)

 

컨테이너 초기화 -> 빈 인스턴스화 -> 의존성 주입 -> 초기화 콜백 -> 애플리케이션 실행 -> 소멸 콜백 -> 컨테이너 종료

 

1) 컨테이너 초기화

스프링 애플리케이션을 시작할 때, 주로 ApplicationContext 인터페이스의 구현체인 ClassPathXmlApplicationContext, AnnotationConfigApplicationContext 등을 사용하여 스프링 컨테이너를 생성한다. 이 컨테이너는 애플리케이션에서 사용할 모든 빈의 정의와 구성을 로드하고 관리한다.

 

2) 빈 인스턴스화

스프링 컨테이너는 애플리케이션의 설정 정보(예: XML 파일, 애노테이션 기반 설정)를 읽고 해당 정보를 기반으로 빈 인스턴스를 생성한다.

 

3) 의존성 주입

스프링 컨테이너는 빈 생성 이후에 빈 간의 의존관계를 해석하고 주입한다. 의존성 주입(Dependency Injection)은 생성자 주입, 세터 주입 또는 필드 주입을 통해 이루어질 수 있다.

 

4) 초기화 콜백 (EVENT)

빈의 모든 프로퍼티가 설정되고 의존관계가 주입된 후, 초기화 콜백이 실행된다. 이는 빈이 InitializingBean 인터페이스를 구현한 경우 afterPropertiesSet() 메소드를 실행하거나, 빈 설정에서 init-method로 지정된 메소드를 호출함으로써 수행된다.

 

5) 애플리케이션 실행

초기화가 완료된 빈들은 이제 스프링 애플리케이션 내에서 본래의 목적대로 동작한다. 이는 서비스 실행, 웹 요청 처리 등 실제 애플리케이션의 비즈니스 로직을 수행하는 단계이다.

 

6) 소멸 콜백 (EVENT)

애플리케이션이 종료되기 전, 스프링 컨테이너는 등록된 모든 빈에 대하여 소멸전 콜백을 수행한다. 빈이 DisposableBean 인터페이스를 구현한 경우 destroy() 메소드를 실행하거나, 빈 설정에서 destroy-method로 지정된 메소드를 호출하여 리소스 해제 등의 정리 작업을 수행한다.

 

7) 컨테이너 종료

마지막으로 스프링 컨테이너 자체가 종료되며, 모든 빈 인스턴스가 소멸되고 관련 리소스가 정리된다.

728x90

관련글 더보기

댓글 영역