1. IOC란?
제어의 역전을 의미하고 이는 제어권이 개발자에게 있는 것이 아닌 외부에 있을 때 제어의 역전이라고 한다. 이와 관련해서 프레임워크와 라이브러리를 예로 사용할 수 있다.
프레임워크 | 라이브러리 |
작성 코드의 흐름을 대신 제어한다. | 작성 코드의 흐름의 제어를 개발자가 한다. |
예시: Junit |
2. DI란?
DI란 Dependency injection의 줄임말로 의존관계 주입(의존성 주입)을 DI라고 한다. 앞에서 살펴본바와 같이 생성자를 통해서 구현객체를 설정해주고 클라이언트는 구현체가 아닌 인터페이스(추상 클래스)에만 의존할 수 있게 해준다.
의존관계 주입에는 정적 의존관계와 동적 의존관계 두 가지로 나누어 살펴볼 수 있다.
정적 의존관계 | 동적 의존관계 |
import 하는 것만 보고 바로 의존 관계를 파악할 수 있을 때 정적 의존관계라고 한다. | 실제 객체가 실행되는 시점에 의존관계를 동적 의존관계라 한다. 의존관계 주입도 정적 의존관계의 변경 없이 동적 의존관계만 변경해서 진행이 가능하다. |
예시: 클래스 다이어그램 | 예시: 객체 다이어그램 |
위의 코드와 같이(빨간 체크 부분) 간단하게 코드만 보아도 정적 의존관계는 파악할 수 있다.
3. 컨테이너란?
초기에는 IOC 컨테이너라고 부르며 객체의 생성을 책임지고 제어권을 갖는 것을 말했는데, 이는 너무 포괄적인 개념으로 사용됨에 따라서 요즘은 DI 컨테이너라고 많이 부른다.
4. 출처
'Back-End > Spring' 카테고리의 다른 글
[Spring][스프링 기본편] - 12. BeanFactory와 ApplicationContext (0) | 2022.01.25 |
---|---|
[Spring][스프링 기본편] - 11. 스프링 컨테이너 생성과 스프링 빈 조회하기 (0) | 2022.01.23 |
[Spring][스프링 기본편] - 9. AppConfig 리팩토링 (0) | 2022.01.17 |
[Spring][스프링 기본편] - 8. 의존관계 주입, 의존성 주입 (0) | 2022.01.15 |
[Spring][스프링 기본편] - 7. DIP OCP 위반과 NPE (0) | 2022.01.15 |