NestJS

[NestJS] 모듈 간의 자유로운 의존성 사용, 다른 모듈의 의존성 주입

ohyujeong 2022. 2. 24. 13:46

각각 다른 기능을 담당하는 모듈1,2가 있다고 가정해보자.

그런데 이 두 개의 모듈에서 같은 클래스를 써줘야 하는 경우엔 어떻게 해야 할까???

같은 클래스를 여러번 작성하는건 대충 생각해봐도 너무 비효율적이다.

 

그럴 때 NestJS의 의존성 주입을 이용해서 반복해서 써야 하는 클래스를 하나의 모듈에 한 번만 쓰고,

다른 모듈에서 불러와서 해당 모듈을 불러와서 자유롭게 사용할 수 있다.

NestJS를 사용해서 만드는 어플리케이션 구조를 보면 쉽게 이해할 수 있다.

 

NestJS의 모든 모듈은 공유모듈 이기때문에, 일단 생성되면 모든 모듈에서 재사용할 수 있다. 

 

 

모듈1에서 모듈2의 서비스를 사용하려 한다 가정하고, 과정을 따라가보자.

 

1. 모듈1의 import에 모듈2 작성하기

 

MyArticleModule(모듈1)에 ChallegeMoudle과 AuthMoudule를 import 해줬다. 

 

2. 모듈2에서 사용하려는 모듈2의 내부 providers를 외부로 export 해주기

ChallengeMoudel(모듈2)의 ChallengeService를 모듈1에서 사용하고 싶었기 때문에,

공급자 ChallegeService를 export 해줬다.

이제 외부(다른 모듈)에서도 ChallegeService를 공급자로서 자유롭게 사용할 수 있다!

 

3. 모듈1에 모듈2의 공급자의 의존성 주입 후 자유롭게 사용하기

MyArticleController에서도 ChallegeService를 사용할 수 있다.

 

 

이렇게 다른 모듈 간에 내부 공급자를 외부로 내보내고 의존성 주입하는 경우에 순환 종속성 을 조심해야 한다고 한다.

모듈2 -> 모듈1 이렇게 단방향이 아니라

모듈2 <-> 모듈1 이렇게 되는 경우에 순환 종속성이 발생한다. 

 

 

 

참고링크 : https://docs.nestjs.com/modules