Study/OOP
IoC, DI, 그리고 컨테이너
lsh2613
2023. 7. 25. 21:39
IoC (Inversion of Control) - 제어의 역전
개발자가 직접 객체를 생성, 설정, 초기화, 소멸 등의 객체의 생명 주기를 제어하는 것은 자연스러운 일이다.
하지만 위 역할을 개발자가 직접 하는것이 아니라 개발자가 구현한 코드 및 프레임워크에게 위임하는 것을 IoC, 제어의 역전이라고 한다.
저번 게시글에서 AppConfig 클래스를 생성하여 생성자 주입을 통해 객체의 생성과 연결을 위임했었다. 이처럼 프로그램의 제어 흐름을 직접 제어 하지 않고 외부에서 제어하는 것을 제어의 역전이라고 부른다.
프레임워크 VS 라이브러리
프레임워크 - 내가 작성한 코드를 대신 제어하고, 대신 실행 ( ex) JUnit )
라이브러리 - 내가 작성한 코드가 직접 제어의 흐름을 담당
DI (Dependency Injection) - 의존관계 주입
IoC 역전을 실현시키기 위한 디자인 패턴 중 하나로, IoC와 DI 모두 객체간의 결합을 느슨하게 만들어 유연하고 확장성이 뛰어난 코드를 만들기 위한 패턴이다.
IoC 컨테이너, DI 컨테이너
AppConfig 처럼 객체를 생성하고 관리하면서 의존관계를 연결해주는 것을 말함
- 의존 관계 주입에 초점을 맞춰 주로 DI 컨테이너라고 부른다