📖 ✏️
- TIL 시리즈에 작성된 글은 '매일 매일 학습한 지식 조각을 메모해 놓은 포스팅'입니다. 공유가 아닌 개인적인 학습 내용 기록을 목적으로 작성되었음을 알려드립니다.
- 그 외 시리즈에 작성된 공유 목적의 포스팅은 시간이 날 때마다 별도로 작성하고 있습니다. 주로, TIL 시리즈에 작성된 내용에서 특정 주제를 선정하고, 더 깊이 공부한 후 정리하여 작성합니다.
BeanFactory는 스프링 컨테이너의 최상위 인터페이스다. 모든 스프링 Bean을 관리하고 조회하는 역할을 담당한다. 스프링 Bean에 등록된 객체를 조회하는 getBean()
은 getBean()
가 제공하는 메서드이다. ApplicationContext를 통해 getBean()
를 사용할 수 있는 이유는 BeanFactory
를 상속받았기 때문이다. 스프링 Bean과 관련된 대부분의 기능은 BeanFactory
가 제공한다.
ApplicationContext
객체는 BeanFactory
의 기능을 모두 상속받아 제공한다. 대부분의 Bean 관련 기능은 BeanFactory
가 제공하지만, ApplicationContext
는 애플리케이션을 개발할 때 필요한 다양한 부가 기능을 담당한다.
1) 메시지 소스를 활용한 국제화 기능
2) 환경변수
3) 애플리케이션 이벤트
4) 편리한 리소스 조회
ApplicationContext
는 BeanFactory
의 기능을 상속받아, 대부분의 Bean 관리기능을 제공한다. ApplicationContext
만의 고유한 기능으로는 애플리케이션 개발에 필요한 다양한 부가 기능을 제공한다. BeanFactory
를 직접 사용할 일은 거의 없다. 부가기능이 포함된 ApplicationContext
를 주로 사용한다. BeanFactory
과 ApplicationContext
모두 스프링 컨테이너라고 부른다. 하지만 일반적으로는 BeanFactory
를 상속받은 ApplicationContext
를 지칭하는 경우가 많다.