nest js를 사용할떄 DI라는 이름이 계속 나오는데
DI가 뭔지 알아보겠습니다.
moudle service controller만 있으면되니까 프로젝트 생성하면 기본적으로
생성되는것들로 설명하겠습니다.
의존성 주입이란
간단하게 말하면
A클래스가 B클래스의 속성을 가지고있으면 의존성을 가진다 라고합니다.
근데 nestjs 에선 이런식으로 인스턴스를 생성하지않고 타입만 정의해주는것만으로
Appservice의 메소드들을 사용할수있습니다. 이게 DI에요
근데 그럼 굳이 왜 이렇게 하는걸까 라는 의문이들수있습니다.
왜 사용하냐고하면 일단 그냥 프레임워크이기 떄문에 그냥 사용하게맞습니다.
프레임워크를 사용하는 이유가 정해진 규칙을 따르기만하면
멋있는 application을 만들수있잖아요? 규칙을 따르면 우리가 좋을 뿐입니다.
그럼 어떤 이점을 가져다주길래 쓰는걸까요?
근데 신기하죠 이런게 가능한 이유가 뭘까요
이런것들을 관리해주는게 IOC Container입니다.
Container
진짜 continaer박스 생각하면됩니다 IT에선 이렇다할 정의가 없는거같아요
Inversion Of Control
말 그대로 제어의 역전(inversion)입니다.
우리가 하나한 제어해야할 부분을 IOC container에 담아두면
알아서 잘 관리해주는것이죠 제가 방금 담아둔다라고 말했잖아요?
그럼 nest.js를 쓰는게 IOC Container에 담아두는것일까요?
그것이 아니라 nest js 에서 DI를 사용하니까 DI를 쓰고
dependency injection 뿐만이아니라 다른 규칙도
nest js 에서 제공하는것들을 사용해야한다는겁니다.