https://camof1ow.tistory.com/30
의존성 주입 D.I 란?
싱글톤 패턴에서는 하나의 클래스에서 오직 하나의 인스턴스만을 가지게 되는 데 기능적인 모듈들의 단위 테스트가 필요할 때 독립적인 인스턴스 생성이 어렵게 된다. 이렇게 모듈 간의 강한
camof1ow.tistory.com
앞서 작성한 D.I 개념에 덧붙여 제어 반전 컨테이너에 대해 이어 작성해본다.
제어의 흐름 구조를 뒤바꾸는 것을 제어의 역전,제어의 반전 Inversion of Control (IoC)라고 한다.
실행에 필요한 객체의 생성이나 사용등의 제어 권한을 다른 클래스에 위임하는 것을 의미하는데
제어반전을 구현하는 주된 방법이 앞서 소개했던 D.I라고 할 수 있다.
스프링 프레임워크에서는 객체를 생성하고 관리하는 것을 대신하는 컨테이너의 기능을
IoC 또는 스프링 컨테이너라고 한다.
객체를 직접 생성하는 방식이 아닌 등록해두고 필요에 의해 꺼내다 쓰는 방식으로 구현되는 데
이때 DI를 통해 각 클래스간의 의존관계를 Bean 설정 (Bean Definition)정보를 바탕으로 자동으로 연결한다.
연결되는 정보를 아래와 같이 도식화해보면 아래와 같은 걸 알 수 있다.
- Setter Injection (수정자 주입)
- Constructor Injection (생성자 주입)
- Method Injection (필드 주입)

스프링 컨테이너 (IoC 컨테이너)의 종류
스프링 컨테이너가 관리하는 객체를 빈(Bean)이라고 하고,
이 빈들을 관리한다는 의미로 컨테이너를 빈 팩토리(BeanFactory) 라고 부릅니다.
- 객체의 생성과 객체 사이의 런타임 관계를 DI 관점에서 볼 때 컨테이너를 BeanFactory라고 한다.
- BeanFactory에 여러가지 컨테이너 기능을 추가한 어플리케이션컨텍스트(ApplicationContext) 가 있다.
Bean Factory란?
- BeanFactory 계열의 인터페이스만 구현한 클래스는 단순히 컨테이너에서 객체를 생성하고 DI를 처리하는 기능만 제공한다.
- Bean을 등록, 생성, 조회, 반환 관리를 한다.
- 팩토리 디자인 패턴을 구현한 것으로 BeanFactory는 빈을 생성하고 분배하는 책임을 지는 클래스이다.
- Bean을 조회할 수 있는 getBean() 메소드가 정의되어 있다.
- 보통은 BeanFactory를 바로 사용하지 않고, 이를 확장한 ApplicationContext를 사용한다.
Application Context란?
- Bean을 등록, 생성, 조회, 반환 관리하는 기능은 BeanFactory와 같다.
- 스프링의 각종 부가 기능을 추가로 제공한다.
- BeanFactory 보다 더 추가적으로 제공하는 기능
- 국제화가 지원되는 텍스트 메시지를 관리 해준다.
- 이미지같은 파일 자원을 로드할 수 있는 포괄적인 방법을 제공해준다.
- 리스너로 등록된 빈에게 이벤트 발생을 알려준다.
https://dev-coco.tistory.com/80
[Spring] IoC 컨테이너 (Inversion of Control) 란?
IoC (Inversion of Control)? IoC를 네이버 영어사전에서 번역해보면 제어 반전을 뜻하고 있습니다. IoC(제어 반전)이란, 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을
dev-coco.tistory.com
'배운 거 > C.S' 카테고리의 다른 글
| CORS ? (0) | 2022.08.14 |
|---|---|
| Rest API? (0) | 2022.08.09 |
| Spring Bean이란? (0) | 2022.07.31 |
| 의존성 주입 D.I 란? (0) | 2022.07.31 |
| [자료구조] 이진탐색트리 (0) | 2022.07.30 |