Container
-객체의 생성, 사용, 소멸에 해당하는 라이프사이클을 담당
-라이프사이클을 기본으로 애플리케이션 사용에 필요한 주요 기능 제공
Container 기능
1. 라이프사이클 관리
2. Dependency 객체 제공
3. Thread 관리
4. 기타 애플리케이션 실행에 필요한 환경
Container 필요성
-비즈니스 로직 외에 부가적인 기능들에 대해서는 독립적으로 관리되도록 하기 위함
-서비스 look up이나 Configuration에 대한 일관성을 갖기 위함
-서비스 객체를 사용하기 위해 각각 Factory 또는 Singleton 패턴을 직접 구현하지 않아도 됨
IoC Container
-오브젝트의 생성과 관계 설정, 시용, 제거 등의 작업을 애플리케이션 코드 대신 독립된 컨테이너가 담당
-컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있어서 IoC라고 부름
-스프링 컨테이너를 IoC 컨테이너라고 부르기도 함
-스프링에서 IoC를 담당하는 컨테이너에는 BeanFactory, ApplicationContext(BeanFactory의 하위 객체)가 있음
Spring DI Container
-빈(Bean) : Spring DI Container가 관리하는 객체
-빈들의 생명주기(Life-Cycle)를 관리하므로 빈팩토리(Bean Factory)라고 함
-Bean Factory에 여러 가지 컨테이너 기능을 추가하여 ApplicationContext라고 함
BeanFactory
-Bean을 등록, 생성, 조회, 반환 관리
-일반적으로 BeanFactory보다 이를 확장한 ApplicationContext 사용
-getBean() method가 정의되어 있음
<<interface>>
Application
-Bean을 등록, 생성, 조회, 반환 관리
-Spring의 각종 부가 서비스 추가 제공
-Spring이 제공하는 ApplicationContext 구현 클래스는 여러가지 종류가 있음
Spring Container
BeanFactory -> ApplicationContext -> WebApplicationContext
BeanFactory에서 WebApplicationContext로 갈수록 점점 더 확장된 기능을 가진 Container입니다.
1. <<interface>> BeanFactory
-빈(Bean) 객체에 대한 생성과 제공을 담당
-단일 유형의 객체를 생성하는 것이 아니라, 여러 유형의 빈을 생성 및 제공
-객체 간의 연관 관계를 설정하고, 클라이언트 요청 시 빈을 생성
-빈의 라이프 사이클 관리
2. <<interface>> ApplicationContext
-BeanFactory가 제공하는 모든 기능 제공
-엔터프라이즈에 애플리케이션을 개발하는데 필요한 여러 기능을 추가함
-I18, 리소스 로딩, 이벤트 발생 및 통지
-컨테이너 생성 시 모든 빈 정보를 메모리에 로딩함
3. <<interface>> WebApplicationContext
-웹 환경에서 사용할 때 필요한 기능이 추가된 애플리케이션 컨텍스트
-가장 많이 사용하며, 특히 XmlWebApplicationContext를 가장 많이 사용함
'Spring' 카테고리의 다른 글
[FileUpload] 파일 업로드 (0) | 2022.04.22 |
---|---|
[Spring Architecture DI] 의존성 주입(DI) (0) | 2022.04.20 |
[Spring Architecture DI] IoC (0) | 2022.04.20 |
[Spring Architecture DI] Spring Framework 구조 (0) | 2022.04.19 |
[Spring Architecture DI] Spring 등장 배경 (0) | 2022.04.19 |