Programming/Spring
Spring Container
khj1999
2025. 2. 6. 20:58
스프링 컨테이너(Spring Container)는 스프링 프레임워크의 핵심 개념 중 하나로, 객체(Bean)의 생성, 관리, 소멸을 담당하는 역할을 합니다. 이를 통해 개발자는 객체의 생성과 관계 설정을 직접 처리하지 않고, 스프링이 이를 대신 관리하도록 할 수 있다
🌱 스프링 컨테이너(Spring Container)란?
스프링 컨테이너는 스프링의 IoC(Inversion of Control) 기능을 제공하는 핵심 요소이다. 컨테이너는 개발자가 직접 객체를 생성하지 않고, 스프링이 객체의 라이프사이클을 관리하도록 위임하는 역할을 함/
🏗️ 스프링 컨테이너의 주요 기능
- 객체(Bean) 생성 및 관리
- 개발자가 직접 객체를 생성하지 않고, 스프링이 객체를 자동으로 생성하여 관리합.
- 의존성 주입(DI, Dependency Injection)
- 객체 간의 의존 관계를 컨테이너가 자동으로 설정해 줌.
- 라이프사이클 관리
- 객체의 생성부터 소멸까지의 과정(초기화 및 소멸 메서드 호출)을 관리.
- 객체의 스코프 관리
- 싱글톤(기본값), 프로토타입 등의 스코프를 지정할 수 있다.
⚙️ 스프링 컨테이너의 종류
스프링 컨테이너는 여러 가지가 있으며, 가장 많이 사용되는 두 가지는 다음과 같다.
1️⃣ BeanFactory (최소한의 컨테이너)
- ApplicationContext의 상위 개념으로, 가장 단순한 형태의 컨테이너
- 지연 로딩(Lazy Loading) 방식으로 Bean을 생성 (필요할 때만 객체 생성)
- 주로 메모리 효율이 중요한 경우 사용
- 대표적인 구현체: DefaultListableBeanFactory
2️⃣ ApplicationContext (실제 개발에서 주로 사용)
- BeanFactory의 기능을 포함하면서 더 많은 부가 기능을 제공
- 즉시 로딩(Eager Loading) 방식으로 Bean을 미리 생성
- 메시지 소스, 이벤트 처리, 국제화 등의 추가 기능 제공
- 대표적인 구현체:
- AnnotationConfigApplicationContext → Java 기반 설정 사용
- ClassPathXmlApplicationContext → XML 설정 파일 사용
🛠️ 스프링 컨테이너의 동작 과정
- 설정 파일(XML, Java Config 등) 또는 어노테이션 기반으로 Bean 정의
- 스프링 컨테이너가 설정을 읽고 Bean을 생성 및 등록
- 필요한 의존성을 자동으로 주입(DI)
- 필요한 경우 초기화 메서드 실행
- 애플리케이션 실행 후 컨테이너가 Bean을 관리
- 애플리케이션 종료 시 컨테이너가 Bean 소멸 처리
✅ 정리
- 스프링 컨테이너는 Bean의 생성, 관리, 의존성 주입, 라이프사이클 관리 역할을 수행
- BeanFactory는 최소한의 컨테이너, ApplicationContext는 실무에서 많이 사용
- 대부분의 엔터프라이즈 애플리케이션에서는 ApplicationContext를 사용
- Java 설정(@Configuration + @Bean), XML 설정, 어노테이션 기반 설정(@Component, @Service 등)으로 컨테이너를 설정할 수 있음