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 초기화 방식의 주입을 사용하여 해결할 수 있지만,
스프링은 순환 참조의 고리를 끊는 것을 추천한다.