BeanFactory와 ApplicationContext
BeanFactory는 스프링 컨테이너의 최상위 인터페이스이다. 스프링 빈을 관리, 조회하는 역할을 담당하며 우리가 사용했던 getBean()도 사실 BeanFactory에서 제공하는 기능이다.
하지만 Application을 개발할 때는 빈을 조회, 관리하는 기능을 제외하고도 수 많은 부가기능이 필요하다.
위와 같이 Application은 BeanFactory를 제외하고도 다양한 interface를 상속받고 있다.
각각의 다른 interface를 간단히만 설명하면
- MessageSource: 메세지 소스를 활용한 국제화 기능, 한국에서는 한국어로, 영어권에서는 영어로 설정할 수 있는 기능이 있음.
- EnvironmentCapable: 개발을 할 때 로컬, 테스트, 운영 서버 등 다양한 환경에서 처리를 해야하는데 어떤 환경에서는 어떤 DB를 사용할 지 어떤 처리를 할 지를 정의할 수 있음
- ApplicationEventPublisher: 이벤트를 발행, 구독하는 모델을 지원함
- ResourceLoader: 리소스 조회를 편리하게 해줌