Back-End/Spring

[Spring][스프링 기본편] - 10.IOC, DI, 그리고 컨테이너

얄루몬 2022. 1. 20. 17:33

1. IOC란?

제어의 역전을 의미하고 이는 제어권이 개발자에게 있는 것이 아닌 외부에 있을 때 제어의 역전이라고 한다. 이와 관련해서 프레임워크와 라이브러리를 예로 사용할 수 있다.

프레임워크 라이브러리
작성 코드의 흐름을 대신 제어한다. 작성 코드의 흐름의 제어를 개발자가 한다.
예시: Junit  

 

 

2. DI란?

DI란 Dependency injection의 줄임말로 의존관계 주입(의존성 주입)을 DI라고 한다. 앞에서 살펴본바와 같이 생성자를 통해서 구현객체를 설정해주고 클라이언트는 구현체가 아닌 인터페이스(추상 클래스)에만 의존할 수 있게 해준다.

의존관계 주입에는 정적 의존관계와 동적 의존관계 두 가지로 나누어 살펴볼 수 있다.

정적 의존관계 동적 의존관계
import 하는 것만 보고 바로 의존 관계를 파악할 수 있을 때 정적 의존관계라고 한다. 실제 객체가 실행되는 시점에 의존관계를 동적 의존관계라 한다.
의존관계 주입도 정적 의존관계의 변경 없이 동적 의존관계만 변경해서 진행이 가능하다. 
예시: 클래스 다이어그램 예시: 객체 다이어그램

정적 의존관계

위의 코드와 같이(빨간 체크 부분) 간단하게 코드만 보아도 정적 의존관계는 파악할 수 있다.

 

 

3. 컨테이너란?

초기에는 IOC 컨테이너라고 부르며 객체의 생성을 책임지고 제어권을 갖는 것을 말했는데, 이는 너무 포괄적인 개념으로 사용됨에 따라서 요즘은 DI 컨테이너라고 많이 부른다. 

 

 

 

4. 출처

https://inf.run/7GX1

 

스프링 핵심 원리 - 기본편 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보세요! 📢

www.inflearn.com