코딩하는 털보

21.11.17 TIL 본문

Diary/Today I Learned

21.11.17 TIL

이정인 2021. 11. 22. 00:49

오늘의 삽질

순환 참조 에러 Is there an unresolvable circular reference?

UserService가 MonsterService를 DI 받고

@Service
@RequiredArgsConstructor
public class UserService {

    private final UserRepository userRepository;
    private final FollowServiceImpl followService;
    private final MonsterService monsterService;
    private final HabitServiceImpl habitService;

반대로 MonsterService도 UserService를 DI 받는다면

@Service
@RequiredArgsConstructor
public class MonsterService {

    private final MonsterRepository monsterRepository;
    private final MonsterDatabaseRepository monsterDatabaseRepository;
    private final UserService userService;
    private final MonsterCollectionService monsterCollectionService;

순환 참조로 인해 어플리케이션 빌드 시점에서 에러가 발생한다.

Setter로 의존성 주입을 받거나 @Lazy로 Lazy 초기화 방식의 주입을 사용하여 해결할 수 있지만,
스프링은 순환 참조의 고리를 끊는 것을 추천한다.

Comments