Spring 환경에서 프로젝트를 구현하던 중 서로 다른 서비스가 서로를 참조하는 일이 발생했습니다.
이런 경우 Bean이 생성되는 과정에 서로를 기다리며 무한루프에 빠지는 순환 참조 문제가 발생하는 것으로 알고 있습니다 !
도전과제 하위 품목 달성 업데이트 이후 전체 카테고리 달성 여부를 확인하는 과정에서,
카테고리와 서브카테고리 서비스가 서로를 참조하게 되었습니다..



구현 전에 과정을 생각했을 때는 이런 문제가 발생하지 않을 줄 알았는데,
코드를 작성하는 과정에서 기능 단위로 메소드를 분리하며 진행하다 보니
'서비스의 책임 범위를 고려해봤을 때 이건 다른 서비스에 작성하는게 좋겠다!'라는 생각이 들었습니다.
그렇게 작성 위치가 달라지다 보니 어느 순간 저렇게 순환 참조가 발생하게 되었네요..!
@Lazy 어노테이션을 사용해서 둘 중 하나의 Bean이 먼저 생성되게 하는 방법도 있었으나, 어플리케이션 구성 단계에서 오류가 드러나지 않는 경우가 발생할 수 있다고 해서 다른 방식을 구성해봤습니다.
고민한 결과, 두 서비스를 호출하는 새로운 서비스를 활용하기로 했습니다 !

요로코롬 다른 서비스에서 두 서비스를 호출함으로써 순환 참조 문제를 해결해보았읍니다~~