• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

22.05.13 20:46 작성 조회수 1.27k

1

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

답변 1

답변을 작성해보세요.

2

Soongu Jeon님의 프로필

Soongu Jeon

2022.05.29

안녕하세요.

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

 

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