ComponentScan은 빈으로 관리해야 할 객체들을 찾아서 빈으로 등록 해준다. 일반적으로 @ComponentScan의 위치 부터 하위 패키지를 돌면서 @Component와 @Bean 어노테이션을 가지고 있는 객체 찾아 빈으로 등록 한다.
패키지를 돌면서 빈 등록을 하면 어떤 순서로 등록이 될까? 상위 패키지부터 하위 패키지 순서로 등록이 될까? 한번 해봤다.
위와 같은 구조에
BController는 AService, BService를 의존
하고, BService는 CService를 의존
하도록 했다.
상위 패키지 부터 하위 패키지 순서로 Scan을 하니 Controller들이 먼저 등록이 되고 Service들이 등독이 될 것 같지만 결과는 아니었다. 왜 이렇게 순서가 달랐는지 Scan과정을 요약하면 이렇다.
위 와 같은 과정을 요약 하자면
한 줄평 : AbstractAutowireCapableBeanFactory 클래스의 createBeanInstance() 메소드를 디버거 걸어서 확인해봤다.