A클래스에 B가 필요하고 B 클래스에도 A가 필요할 때 발생

ex)

auth에서 UserModule을 사용하고

user에서도 AuthModule을 사용할 때 발생

해결 방법

스프링의 경우??

@Component
public class Chicken {
    @Autowired
    Egg egg;

    public void layEgg(){
        egg.becomeChicken();
    }

}

닭은 달걀을 낳고, 달걀은 닭이 된다.

@Component
public class Egg {
    @Autowired
    Chicken chicken;

    public void becomeChicken() {
        chicken.layEgg();
    }

}

달걀은 닭이 되고, 닭은 달걀을 낳는다.

@Bean
public CommandLineRunner run(Chicken chicken, Egg egg) throws Exception {
    return (String[] args) -> {
        chicken.layEgg(); // 실행
    };
}

여기에서 닭이 달걀을 낳는다를 실행시키면!

java.lang.StackOverflowError: null