본문 바로가기

Spring

Spring의 DI와 IoC에 대해 설명할 수 있나요?

DI : Dependecy Injection

번역하면 의존성주입 이다.

 

예시를 들어서 설명해보자

 

컴퓨터가 있다.

컴퓨터를 살 때, 조립식 컴퓨터가 있고 그냥 완성품 컴퓨터를 살 수 있다.

 

 

조립식 컴퓨터를 산다고 할 때, 각각의 부품을 사서 컴퓨터에 끼우는 방식이다.

여기서 각각의 부품D : Dependency라고 볼 수 있다.

그리고 끼우는 과정I : Injection이라고 할 수 있다.

 

 

현실에서 부품을 사서 조립하는 과정을 돈 주고 맡기기도 하는 것 처럼

Spring이 조립을 해준다. 이 기능을 Spring의 핵심기능 중 하나인 DI라고 볼 수 있다.

 

IoC : Inversion of Control

일체형 프로그램은 큰 단위로부터 작은 단위로 생성이 된다.

하지만 결합형 프로그램 (위에서 예시로 든 조립식 컴퓨터)는 작은 단위로부터 결합해서 큰 단위로 만들어진다.

 

생성 순서가 역순이라서 Inversion of Control이다.

IoC Container는 결합된 단위를 담고있는 Container를 의미한다.

 

만약 부품(Dependency)들만 담고 있다면 Depedency Container라고 할 텐데 부품들을 조립한 단위들을 담고 있어서 IoC Container라고 한다.

 

조립된 부품들이 있는 박스라고 볼 수 있다.

 

정리 

DI : Dependency Injection 

Dependency : 부품

Injection : 부품을 조립 (장난감에 건전지를 장착)

Spring의 핵심기능 중 DI : 자동으로 의존성 주입 (자동으로 부품을 조립해줌)

 

IoC : Inversion of Control

일체형프로그램과 생성 순서가 역순 => Inversion => 작은단위로 부터 큰 단위로 만들어짐

 

IoC Container : 작은 단위로부터 큰 단위로 만들어진 단위를 담고있는 Container

 

위 내용은 스스로 이해한 내용을 정리한 내용입니다. 잘못된 부분이 있을 수 있습니다.

 

참고

https://www.youtube.com/watch?v=QrIp5zc6Bo4 

https://www.youtube.com/watch?v=WjsDN_aFfyw