[내일배움캠프] TIL_230215

JungHoon Han·2023년 2월 15일
0

내일배움캠프

목록 보기
70/78
post-thumbnail

Nest.JS는 DI를 통해 IoC를 구현한 프레임워크이다.

  • 멀리서 보면 DI보다 IoC가 더 크고 추상적인 개념이다.
    IoC는 추상적이기 때문에 이를 구현한게 DI이며, 이는 제어 역전의 구현체 중 하나이다.
    그래서 DI를 통해 IoC를 구현했다고 한다.

DI : Dependency Injection (의존성 주입)

프레임워크가 주체가 되어 내가 필요한 클래스 등을 나 대신 프레임워크가 관리해준다는 개념이라고 생각하면 된다. 쉽게 말하자면, 말 그대로 하나의 코드가 다른코드에 의존하는 상태를 말한다.

// 현재 클래스 A 는 클래스 B를 사용하기 떄문에 A는 B에 의존하고 있다.
class A {
  const b = new B()
  // 내용 생략
}

class B {
  // 내용 생략
}

IoC : Inversion of Control (제어 역전)

제어 역전을 한마디로 표현한다면 나 대신 프레임워크가 제어한다 이다.
DI가 클래스 A가 클래스 B를 직접 참조하고 의존했다면, IoC는 A와 B사이에 매개체를 두고 그 매개체를 통해서 사용한다고 생각하면 된다.
그렇게 되면 클래스 B는 매개체에 등록하여야 하고 매개체가 제어권을 갖게된다.
여기서 제어권을 IoC Container라고 하는데 가지고있는 제어권을 사용하여 의존성을 관리하고, 인스턴스를 생성하여 주입하고 메모리를 해제하는 역할까지한다.
IoC Container는 주로 프레임워크가 담당한다.

profile
Node.js 주니어 개발자

0개의 댓글