[5. IoC, DI, 컨테이너]
제어의 역전IoC (Inversion of Control)
- 구현 객체가 프로그램의 제어 흐름을 스스로 조종하는 것이 아닌 외부에서 관리하는 것 (AppConfig가 하는 역할)
프레임 워크 ↔ 라이브러리
- 내가 작성한 코드를 제어하며 대신 실행 → 프레임 워크
- 내가 작성한 코드가 직접 제어의 흐름을 담당 → 라이브러리
의존관계 주입 DI (Dependency Injection)
- 실행 시점에 실제 구현 객체를 생성하고 클라이언트에 전달해 클라이언트와 서버의 실제 의존관계가 연결되는 것
- DI를 사용하면 클라이언트 코드(구현 코드)를 변경하지 않고 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있음
IoC, DI 컨테이너
- AppConfig처럼 객체를 생성하고 관리하며 의존관계를 연결해주는 기능을 함
- 최근에는 DI컨테이너라고 주로 사용하며 Spring이 그 역할을 함