인프런 커뮤니티 질문&답변

김택수님의 프로필 이미지
김택수

작성한 질문수

탄탄한 백엔드 NestJS, 기초부터 심화까지

JWT와 로그인 서비스 & 순환 참조 모듈

순환참조가 되면 안되는 이유가 궁금합니다.

작성

·

1.6K

1

순환참조라는 것을 방지하기 위해서 forwardRef메서드를 사용해서 순환참조에러를 방지한다고 말씀해주셨는데, 순환참조가 되면 안되는 이유와 어쨌든 양방향에서 imports를 하는데 forwardRef메서드를 사용하면 어떤 원리로 순환참조에러를 해결할 수 있는지 궁금합니다!

답변 1

2

안녕하세요.

질문이 달린지 오래되어 이미 해결하셨을지도 모르는 문제이지만 짧은 지식으로 답변드리겠습니다.

 

1. 순환참조가 되면 안되는 이유

"A ->B" 우리는 A는 B에 의존한다. 라고 표현합니다. 그렇다면 순환 참조의 경우를 살펴보겠습니다

"A -> B -> A" A는 B에 의존성이 있고 B도 A의 의존성이 있습니다. 이런 경우는 어떻게 될까요?

A가 초기화 되기도 전에 B가 A를 의존하고 있기 때문에 에러가 나게 됩니다. 모듈의 초기화 순서에 대해서는 정확히는 모르지만 의존성 마지막 순서에 있는 녀석부터 모듈을 초기화하는 것 같습니다.

 

2. forwardRef

forwardRef는 아직 정의되지 않은 클래스를 참조할 수 있게 만들어줍니다.

A가 초기화 되지 않았지만 B가 A를 참조할 수 있게 만들어주는 것입니다.

 

간단하게 설명해드렸지만 더 궁금하시다면 구글링을 해보시는걸 추천드립니다.

 

도움이 될만한 사이트들을 남겨드리겠습니다.

https://jeonghwan-kim.github.io/dev/2020/03/24/circular-dependancy.html

https://docs.nestjs.com/fundamentals/circular-dependency

 

 

 

김택수님의 프로필 이미지
김택수

작성한 질문수

질문하기