BeanFactory와 ApplicationContext는 어떤 차이일까?
BeanFactory 역할
- 스프링 컨테이너 최상위 인터페이스
- 스프링 빈을 관리하고 조회
ApplicationContext 역할
- BeanFactory 기능을 모두 상속받아서 제공
- BeanFactory 외에도 어플리케이션과 관련된 여러가지 기능들을 추가로 상속받음

ApplicationContext 구성
- BeanFactory: 스프링 빈 관리 및 조회
- MessageSource: 메시지 소스 국제화 기능
- EnvironmentCapable: 로컬, 개발, 운영 등 환경을 구분해서 처리
- ApplicationEventPublisher: 스프링 이벤트 기반 프로그래밍 담당
- ResourceLoader: 파일, 클래스 경로, 외부 등에서 리소스 편리하게 조회