Inversion of control, dependency injection
한눈에 보는 핵심 - IoC(제어의 역전): “누가 일을 시킬지”에 대한 주도권을 프로그램(객체)에서 외부로 돌려놓는 큰 원칙 - DI(의존성 주입): 그 IoC를 실제로 적용할 때 가장 많이 쓰는 구체적인 방법
⸻
비유로 이해하기
상황 |
전통적 방식 |
IoC + DI 방식 |
|---|---|---|
레고 자동차 |
자동차 블록이 엔진·바퀴를 스스로 찾아 끼움 |
외부(사람)가 원하는 엔진·바퀴를 골라 끼워 줌 |
요리 |
셰프가 “고기는 내가 직접 시장 가서 사 올게” |
셰프는 “필요한 재료 목록만 알려 줄게, 준비된 걸 주세요” |
- IoC는 “엔진을 어디서 가져올지, 재료를 누가 마련할지” 같은 결정권을 셰프(객체) 대신 다른 쪽(컨테이너·프레임워크·상위 코드)에 넘겨준다는 큰 규칙입니다.
- DI는 실제로 **엔진·재료를 ‘외부에서 건네주는 행위’**입니다.
- 생성자 주입, 메서드 주입, 필드 주입 등 방식만 달리할 뿐, 모두 “필요한 걸 밖에서 넣어준다”는 점은 같습니다.
⸻
관계 정리 1. 범주 - IoC ⟶ 큰 철학(‘제어를 외부로’) - DI ⟶ 그 철학을 실천하는 대표적인 기술 2. 의미 - IoC 없이는 DI를 굳이 쓸 이유가 없습니다. - DI는 IoC를 구현하면서 유연성·테스트 용이성 같은 이점을 끌어옵니다. 3. 공식처럼 기억하기 - “IoC가 원칙, DI가 구현”
⸻
아주 짧게 한 문장으로
IoC는 ‘내가 직접 결정 안 하고 외부가 결정하게 해!’라는 큰 생각이고, DI는 ‘그래서 필요한 걸 외부가 직접 넣어줘’ 하는 실천 방법이다.
Published on