# Circular dependency

매일 수정하는 GNOSS LV5·2022년 1월 24일
1

AndroidStudio

목록 보기
41/83

새로운 기능을 개발하다 보니 모듈들끼리 상호 참조에 걸리게 되었다.

circular dependency

다음과 같은 문구가 뜨면서 앱이 실행 되지 않는다.
나같은 경우 Hilt를 사용하는 부분에서 발생하였고 JVM에서 data class를 호출하는 부분에서 발생하는 것으로 예상되었다.

상호참조의 경우 정확한 에러지점을 알려주지 않기때문에 해결하기 쉽지 않다.


발생원인

A가 B를 참조하고있고, B가 A를 참조하고 있기 때문에 발생한다.


문제점

A를 빌드하려면 B를 빌드해야하고 B를 빌드하려면 A를 빌드해야한다.

역으로 A가 죽으려면 메모리에서 내려야 하는데 B가 걸려있어 내리지 못하고 B를 죽이려면 A가 걸려있어서 아무것도 죽이지 못하고 루프가 돌아버린다.


해결책

  1. 의존관계를 단방향으로 지정해야한다.
    A →B → C... or B→A→C ...
  2. A와 B의 의존관계를 관리하는 C를 새로 만들어 위임을 하자.
profile
러닝커브를 따라서 등반중입니다.

0개의 댓글