상세 컨텐츠

본문 제목

BeanFactory와 ApplicationContext의 차이점

Spring Framework

by Wanderer Kim 2025. 2. 16. 21:56

본문

728x90

Bean이란?

스프링이 제어권을 가져서 직접 생성하고 의존관계를 부여하는 객체를 Bean이라고 부른다.

BeanFactory vs ApplicationContext

BeanFactory

  • Bean을 생성하고 의존관계를 설정하는 기능을 담당하는 가장 기본적인 IoC컨테이너이자 클래스를 말한다. 스츠링 빈 컨테이너에 접근하기 위한 최상위 인터페이스이다.
  • 스프링 빈을 관리하고 조회하는 역할을 담당한다.
  • getBean() 메서드를 제공한다.
  • Lazy-Loading 방식을 사용한다. 즉, Bean을 사용할 때 Bean을 로딩한다. (필요할 때만 로딩하기 때문에 가벼운 경량 컨테이너이다)

ApplicationContext

  • BeanFactory를 확장하고 있어 BeanFactory의 확장된 버전이다.
  • Eager-loading 방식을 사용한다. 런타임 실행 시 모든 빈을 미리 로딩시킨다.
  • MessageSource : 국제화 기능을 제공한다.
  • EnvironmentCapable :  환경 변수를 이용한 로컬, 개발, 운영 구분 기능을 제공한다.
  • ApplicationEventPublisher :  애플리케이션 이벤트를 이용하여, 이벤트를 발행하고 구독하는 모델을 관리하는 기능을 지원한다.
  • ResourceLoader : 편리하게 파일, 클래스패스 등의 리소스를 조회하는 기능을 제공한다.

특별한 경우가 아니라면 BeanFactory의 모든 기능을 포함하고 추가 기능을 제공하는 ApplicationContext를 사용하기를 권장하고 있다.

ApplicationContext 사용을 권장하는 이유?

Bean의 Eager Loading을 사용하는 ApplicationContext 사용을 권장하는 이유는 문제가 있는 Bean 객체가 있을 때, Lazy Loading을 사용하게 되면 해당 Bean이 사용되는 시점이 되기 전까지 해당 오류의 유무를 파악하기가 어렵다. 때문에 Eager Loading을 사용하여 객체의 초기화 시점에 오류를 잡아낼 수 있는 ApplicationContext 사용을 권장하는 것이다.

반응형

관련글 더보기

댓글 영역