티스토리 뷰
Ioc (Inversion of Control)
- 객체에 대한 제어권이 개발자가 아닌 컨테이너로 넘어가면서 객체의 생성부터 생명주기까지 모두 컨테이너가 관리하는 것
- IoC Container인 ApplicationContext에서 XML 파일 또는 annotation을 이용하여 객체 관리
- IoC Container
- IoC 기능을 제공하는 bean 객체를 관리하는 컨테이너
- 객체에 대한 생성 및 의존성을 관리
- BeanFactory 또는 ApplicationContext를 가리킴
- Bean
- 스프링 IoC Container가 생성하고 관계설정과 사용제어 등의 관리를 해주는 객체들
- annotation을 사용하여 객체를 bean으로 등록 가능
- 의존성 주입은 bean끼리만 가능
- BeanFactory
- 스프링의 IoC를 담당하는 핵심 컨테이너
- bean 등록/생성/조회/관리/반환수행
- 보통 BeanFactory를 바로 사용하지 않고 BeanFactory를 확장하는 ApplicationContext를 주로 이용
- ApplicationContext
- BeanFactory를 확장한 IoC 컨테이너
- 기본 기능은 BeanFactory와 같지만 AOP, 메시지/이벤트 처리 등 스프링이 제공하는 부가 서비스를 추가로 제공
- Configuration Metadata
- ApplicationContext 또는 BeanFactory가 IoC를 적용하기 위해 사용하는 메타 정보
- bean 객체를 생성하고 구성할 때 주로 사용
DI (Dependency Injection)
- 각 클래스 간의 의존관계를 Bean Definition 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것
- 객체를 컨테이너로부터 주입 받아 실행 시에 동적으로 의존관계가 생성
- 스프링에서는 Setter 주입/생성자 주입 두 가지 방법으로 의존성 주입 가능