[Spring] 스프링 IoC 컨테이너란? - BeanFactory, ApplicationContext 정리
by 우와한개발자
[ 스프링 IoC 컨테이너 ]
1. IoC 컨테이너란?
1) 제어의 역전 IoC (InversionofControl)
- 애플리케이션의 흐름 제어를 개발자가 아닌 프레임워크나 컨테이너가 담당하게 하는 것.
- 즉, 객체 관리를 개발자가 직접 하지 않고 컨테이너에 위임하는 방식.
2) IoC 컨테이너
- 객체의 생성, 관리, 의존성 주입(DI)을 담당하는 객체
- 스프링 컨테이너를 IoC 컨테이너라고도 부름
3) 주요 기능
- 빈(Bean)관리 : 빈(Bean)의 생성,초기화,의존성 주입, 소멸등 생명주기 관리
- 의존성 주입(DI) : 생성된 객체들사이의 의존성을 주입
- 라이프사이클관리 : 빈(Bean)의 생성, 초기화, 소멸, 종료과정 등 객체의 라이프사이클 관리
2. IoC 컨테이너 구현체
- 스프링은 컨텍스트 클래스로 객체를 생성하고 관리하는 컨테이너 기능을 제공함.
- 컨테이너로부터 빈(Bean)을 찾기 위해서는 컨텍스트가 반드시 필요함.

1) BeanFactory (인터페이스)
- 스프링 IoC 컨테이너의 가장 기본적인 구현체
- Lazy Loading 방식으로 동작하여, 빈을 실제로 요청하는 시점에 생성함.
| 구현체 | 로딩 방식 | 특징 |
| BeanFactory | Lazy Loading | 요청 시점에 빈 생성 |
| ApplicationContext | Pre-Loading | 시작 시점에 빈 미리 생성 |
2) ApplicationContext (인터페이스)
- 거의 모든 스프링 애플리케이션에서 사용하는 구현체
- Pre-Loading 방식으로 동작하여, 컨테이너 시작 시점에 모든 빈을 미리 생성함.
(1) GenericXmlApplicationContext(클래스)
- XML설정파일을 사용해 빈 설정한 경우
// XML 설정 파일로 빈을 등록한 경우
ApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml");
MemberService memberService = context.getBean("memberService", MemberService.class);
(2) AnnotationConfigApplicationContext(클래스)
- 자바 설정 클래스나 어노테이션을 사용해 빈 설정한 경우
// 자바 설정 클래스로 빈을 등록한 경우
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = context.getBean(MemberService.class);
(3) WebApplicationContext(클래스)
- 웹 어플리케이션에 특화된 ApplicationContext
- WebApplicationContext는 개발자가 직접 new로 생성하지 않고, DispatcherServlet이 자동으로 생성하고 관리함.
- 일반 스프링 애플리케이션이 아닌 웹 환경에서만 사용함.
'프레임워크 > Spring' 카테고리의 다른 글
| [Spring] Bean 등록 과 의존성 주입(DI) 설정 - XML 방식 (0) | 2026.03.26 |
|---|---|
| [Spring] Bean과 DI(의존성 주입)란? - Bean 생명주기, 생성자 / setter /필드 주입 정리 (0) | 2026.03.26 |
| [Spring] 스프링 프레임워크(Spring Framework)란? - IoC / DI / AOP / POJO 개념 정리 (0) | 2026.03.26 |
| [Spring] Spring Boot에서 JAR와 WAR 차이 정리 (0) | 2026.01.19 |
| [Spring] 프레임워크와 라이브러리의 차이 / 스프링 프레임워크 (Spring Framework)란? (0) | 2026.01.18 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자