본문 바로가기

Language/Spring

BeanFactory, ApplicationContext

BeanFactory란

  • Spring의 핵심 인터페이스[빈의 생성 / 라이프사이클 관리 / 의존성 주입] 등을 담당
  • ApplicationContext는 BeanFactory를 상속 받아 더 많은 기능을 제공


BeanFactory의 역할

  • 빈 객체의 생성과 관리
    • XML 또는 Java 기반의 설정 메타 데이터를 읽어 빈 객체로 생성, 빈의 생명 주기 관리
    • 빈의 생성, 초기화, 소멸에 대한 관리 + 의존성 주입을 담당
  • 빈 객체의 지연 로딩
    • 빈이 실제로 요청될 때 객체를 생성
      → 메모리를 효율적으로 관리
  • 빈 객체의 설정과 프로퍼티 설정
    • BeanFactory는 빈 객체의 설정 정보와 프로퍼티 값을 관리
    • 설정 파일(XML or Java Config)에서 빈의 정의와 프로퍼티 값을 읽어 빈 객체를 생성하고 설정

 

ApplicationContext

  • BeanFactory를 상속 받은 인터페이스로 애플리케이션에 대한 더 풍부한 구성 정보를 제공
  • BeanFactory의 모든 기능을 포함하고 추가적인 기능 제공
    • 추가 기능 : 국제화 기능 / 환경 변수 관리 / AOP 기능 통합 / 빈 자동 등록
  • 스프링 공식 문서에 따르면 특별한 이유가 없을 경우 ApplicationContext 사용을 권장

 

BeanFactory와 ApplicationContext의 가장 큰 차이점

BeanFactory - Lazy-Loading 방식

  • 요청 시에만 빈을 생성
    → 초기화 속도가 빠르지만, 빈을 요청할 때마다 인스턴스가 생성될 수 있음

 

ApplicationContext - Pre-Loading 방식

  • 스프링 컨테이너가 로드될 때 모든 싱글톤 빈을 미리 생성
    → 빈이 많이 등록된 경우 더 유리