애플리케이션 컨텍스트
- IoC와 DI를 위한 빈팩토리 + 그 이상의 기능을 가진다.
IoC컨테이너
public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,
MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
...
}
ApplicationContext
인터페이스의 내부 코드다. ListableBeanFactory
와, HierarchicalBeanFactory
을 상속 받았다.
IoC컨테이너가 동작하기 위해 필요한 두 가지
- POJO클래스
- 빈설정메타정보
- 빈설정정보는 보통 XML이나 자바코드로 작성되어긴하지만 특정한 파일 포맷이나 형식에 제한되거나 종속되지 않는다.
BeanDefinitionReader
인터페이스를 구현한 Reader를 만들기만하면, 메타정보는 어떤 형식으로든 작성할 수 있다.
IoC 컨테이너를 통해 애플리케이션이 만들어지는 과정
- 메타정보 리소스를 메타정보 리더를 통해 읽어서 설정 메타정보를 만든다.
- POJO클래스와 메타정보를 이용해 애플리케이션컨텍스트를 만든다.
- 2에서 만들어진 애플리케이션 컨텍스트를 이용해 애플리케이션이 만들어진다.
결론 - 스프링애플리케이션이란 POJO클래스와 설정 메타정보를 이용해 IoC컨테이너가 만들어주는 오브젝트의 조합이다.