[NestJs]IoC 와 DI

코드깎는 노인·2022년 1월 10일
0

Inversion of Control(IoC)

제어의 역전이란 객체는 객체가 의존하는 다른 객체를 스스로 생성하지 않고 외부로 부터 얻음을 의미한다.결합성(coupling)을 느슨하게하고 테스트,재사용성을 용이하게 하는 패턴이다.

Dependency Injection(DI)

IoC패턴의 구체적인 버전중 하나이다.객체가 작동하는데 필요한 구현체가 constructors/setters/service lookups을 통해 전달된다.

IoC In NestJs

nestJs에서 의존성의 인스턴스생성은 Ioc컨테이터(NestJs런타임)에 위임한다.
앱시작시 모든 클래스를 DI컨테이너에 등록(클래스에 Injectable데코레이터 붙이고 module의 providers에 등록,controller는 controller 데코레이터로 DI컨테이너에 등록 및 인스턴스 생성) =>
컨테이너는 각 클래스의 의존성을 파악 =>
컨테이너는 각 클래스의 인스턴스 생성하고 제공(Nest가 자동으로 수행함)=>
생성된 인스턴스는 삭제되거나 재생성되지 않고 필요시 재사용됨

출처
https://stackoverflow.com/questions/3058/what-is-inversion-of-control
https://docs.nestjs.com/fundamentals/custom-providers

profile
내가 볼려고 만든 블로그

0개의 댓글