스프링 IoC 컨테이너
- 의존성 주입(DI)를 이용하여 애플리케이션을 구성하는 컴포넌트를 관리함.
- 협력하는 컴포넌트 간의 연관관계를 형성함.
org.springframework.beans와 org.springframework.context 패키지는 스프링 프레임워크 IoC 컨테이너의 기반임.
Tip |
---|
|
- IoC / DI와 관련해서는 이곳을 참고할 것
|
애플리케이션 컨텍스트(ApplicationContext)
- org.springframework.context.ApplicationContext 인터페이스
- BeanFactory의 서브 인터페이스임.
- 더 쉬운 통합을 제공함.
- 스프링의 AOP 기능
- 국제화(i18n, internationalization)를 위한 메시지 리소스 핸들링
- 이벤트 발행(event publication)
- 애플리케이션 레이어 특정 컨텍스트(예. 웹 애플리케이션을 위해 WebApplicationContext 사용)
빈 팩토리(BeanFactory)
BeanFactory or ApplicationContext?
- 특별한 이유가 없는 한 애플리케이션 컨텍스트를 사용할 것을 권장함.[1]
기능 | BeanFactory | ApplicationContext |
---|
빈 인스턴스화/와이어링 | Yes | Yes |
자동 BeanPostProcessor 등록 | No | Yes |
자동 BeanFactoryPostProcessor 등록 | No | Yes |
편리한 MessageSource 접근(i18n을 위한) | No | Yes |
ApplicationEvent 발행(publication) | No | Yes |
ApplicationContext
- org.springframework.context.ApplicationContext 인터페이스는 스프링 IoC 컨테이너를 나타내며, 빈(스프링 빈)을 인스턴스화하고, 설정하고, 조합하는 데 책임이 있음.
- 컨테이너는 어떤 객체를 인스턴스로 만들고 설정하고 조합해야 하는지를 설정 메타데이터에서 알아냄.
- 설정 메타데이터는 XML이나 자바 애노테이션, 자바 코드로 나타냄.
- 설정 메타데이터는 애플리케이션을 구성하는 객체들을 나타내고 그러한 객체들 사이의 풍부한 상호 의존성을 나타냄.
...
...
[1
] ^ http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#context-introduction-ctx-vs-beanfactory[2]
^ 스프링 프레임워크 1.0부터 존재했으며, 스프링 프레임워크 3.0에서 spring-web 모듈로 분리되었음.
여기를 참조할 것.