BeanFactory와 ApplicationContext
이번에는 스프링 컨테이너의 계층에 대해 더 자세히 살펴보려고합니다.
코드에서 가져다 쓰는 ApplicationContext의 상위 계층인 BeanFactory는 스프링 컨테이너의 최상위 인터페이스 입니다. 스프링 빈을 관리하고 조회하는 것들을 제공합니다.
ApplicationContext는 아래와 같이 여러 인터페이스들을 상속받아서 더 다양한 기능들을 포함하고 있습니다
스프링은 또한 여러가지 설정파일 형식을 지원합니다. XML기반, 어노테이션기반 그리고 사용자가 직접 만들어서 생성할 수도 있습니다.
이게 가능한 이유는 ApplicationContext와 설정파일들 사이에 BeanDefinition이라는 것이 끼어있기 때문입니다. 따라서 실제 동작은 아래와 같이 이뤄집니다. 설정파일에 정보를 읽어서 BeanDefinition이라는 메타정보를 생성되면 그게 어떤 종류로 생성되었던 간에 상관없이 ApplicationContext가 스프링 빈을 생성할 수 있습니다.