Spring

[Spring Architecture DI] Container

sujin7837 2022. 4. 19. 23:52
반응형

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를 가장 많이 사용함

반응형