spring
ApplicationContext vs BeanFactory
Lee_SJ
2025. 2. 18. 15:46
스프링 빈이란?
자바빈에서 유래.자바빈은 자바에서 재 사용 가능한 객체를 말한다. 즉 스프링 빈이란 스프링에서 재 사용 가능한 객체를 말함.
⚙️ 1️⃣ BeanFactory란?
BeanFactory는 Spring IoC 컨테이너의 최소한의 핵심 인터페이스.
주요 역할은 **빈(Bean)**을 생성하고, **의존성을 주입(DI)**하며, 라이프사이클을 관리함.
IoC(Inversion of Control): 제어의 역전
|
🧱 주요 특징:
- Lazy Initialization(지연 초기화): 요청 시점에만 빈을 생성
- DI(Dependency Injection) 기능 제공
- BeanPostProcessor, BeanFactoryPostProcessor를 지원
🌿 2️⃣ ApplicationContext란?
ApplicationContext는 BeanFactory를 확장한 인터페이스로,스프링 애플리케이션 전반을 관리할 수 있는 컨테이너.
🔍 ApplicationContext는 뭐가 다를까?
🔍 1️⃣ 핵심 정의:
구분 | BeanFactory | ApplicationContext |
정의 | Spring의 최상위 컨테이너 인터페이스 | BeanFactory를 확장한 고급 컨테이너 |
역할 | 빈 생성, 의존성 주입(DI) 필수 기능 제공 | BeanFactory 기능 + 부가 기능(AOP, 이벤트 관리, 메시지 소스) |
주요 구현체 | DefaultListableBeanFactory | AnnotationConfigApplicationContext, XmlApplicationContext |
초기화 시점 | Lazy Initialization (필요 시 생성) | Eager Initialization (애플리케이션 시작 시 생성) |
주요 메서드 | getBean(), containsBean(), isSingleton() | BeanFactory 메서드 상속 + publishEvent(), getEnvironment() |
사용 주체 | 로우레벨 개발(라이브러리 내부에서 주로 사용) | 일반적인 Spring 애플리케이션 개발 시 사용 |
일단 @SpringBootApplication 시작후
🛠️ STEP 1: ApplicationContext 생성
|
🛠️ STEP 2: BeanDefinition 등록(BeanFactory 단계)
|
🛠️ STEP 3: Bean 의존성 주입(DI)
|
🛠️ STEP 4: ApplicationContext 고유 기능 활성화
|
ApplicationContext를 초기에 시작해 꼭 필요한 설정정보를 로딩하고 BeanDefinition을 통해 사용자가 설정한 정보를 로딩한다.