더북(TheBook)

순환 의존성(그림 3-11)은 빈(빈 A)을 생성하기 위해 스프링이 아직 없는 다른 빈(빈 B)을 주입해야 하는 상황을 의미한다. 하지만 빈 B도 빈 A에 대한 의존성이 필요하다. 따라서 빈 B를 생성하려면 먼저 빈 A가 있어야 한다. 이제 스프링은 교착 상태(deadlock)에 빠졌다. 빈 B가 필요하기 때문에 빈 A를 생성할 수 없고, 빈 A가 필요하기 때문에 빈 B를 생성할 수 없다.

▲ 그림 3-11 순환 의존성: 스프링은 Parrot 타입의 빈을 생성해야 하나 Parrot은 Person을 의존성으로 가져 스프링은 먼저 Person을 생성해야 한다, 그러나 Person을 생성하려면 스프링이 먼저 Parrot을 생성해야 한다, 스프링은 지금 교착 상태에 빠졌고 Person이 필요해서 Parrot을 만들 수 없으며 Parrot이 필요하기 때문에 Person을 만들 수 없다

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.