4. 제어의 역전

수원 개발자·2023년 11월 23일
0

NestJS

목록 보기
6/15


네스트(Nest)는 의존성 주입(Dependency Injection)과 제어의 역전(Inversion of Control)을 중요한 개념으로 활용하는 프레임워크이다. 이 두 가지는 소프트웨어 아키텍처와 모듈화를 강화하며 테스트와 확장성을 개선하는 데 도움을 준다.

의존성 주입 (Dependency Injection)

의존성 주입은 컴포넌트 간의 의존성을 외부에서 관리하는 디자인 패턴이다. 주요 아이디어는 클래스나 모듈이 직접 자신이 필요로 하는 의존성을 생성하거나 참조하지 않고 외부에서 주입 받는 것이다. 이는 코드를 더 모듈화하고 재사용 가능하며, 테스트하기 쉽게 만든다.

네스트에서는 주로 생성자 주입(Constructor Injection)을 사용하여 의존성을 주입한다. 클래스의 생성자를 통해 필요한 의존성을 주입받아 사용한다. 이렇게 하면 의존성이 외부에서 제공되므로, 유연성과 테스트 용이성이 높아진다.

제어의 역전 (Inversion of Control)

제어의 역전은 프로그램의 제어 흐름에 대한 권한을 외부 시스템이나 프레임워크에게 넘기는 것을 의미한다. 이것은 개발자가 코드의 일부를 직접 제어하지 않고 외부에서 관리되도록 하는 것이다. 이는 모듈 간 결합도를 줄이고 유연성을 높여주며, 코드의 확장성과 테스트 용이성을 향상시킨다.

네스트에서 제어의 역전은 주로 의존성 주입을 통해 구현된다.
의존성 주입을 통해 모듈 간의 결합을 낮추고, 필요한 의존성을 외부에서 주입하여 모듈이나 서비스를 쉽게 교체하거나 확장할 수 있도록 한다.

프로바이더 (Provider)

프로바이더(Provider)는 네스트 프레임워크에서 주로 의존성 주입(Dependency Injection)을 위해 사용되는 개념이다.
네스트에서 프로바이더는 클래스를 등록하고, 해당 클래스의 인스턴스를 만들어내거나 관리하는 역할을 한다.

주로 프로바이더는 다음과 같은 용도로 사용된다.

  1. 서비스: 프로바이더는 주로 서비스 클래스를 나타낸다.
    이는 응용 프로그램의 비즈니스 로직이나 데이터 관리, 외부 서비스와의 상호작용 등을 처리하는 데 사용된다.

  2. 팩토리: 프로바이더를 사용하여 인스턴스를 동적으로 생성하는데 사용할 수 있다. 이를 통해 런타임 시점에서 동적으로 필요한 객체를 생성하거나 커스터마이징할 수 있다.

프로바이더는 주로 @Injectable() 데코레이터로 등록되며, 해당 클래스는 의존성 주입을 통해 다른 컴포넌트에 주입될 수 있다.

프로바이더로 사용하고 싶은 클래스에는 모듈에다가 등록을 해줘야하며, injectable로 어노테이션 해줘야 한다.

0개의 댓글

관련 채용 정보