@SpringBootApplication 애노테이션을 통해 Spring boot에서 Bean을 등록하는 과정은 크게 두 단계로 나눌 수 있다.
- 1단계: @ComponentScan
- 2단계: @EnableAutoConfiguration
1단계 @ComponentScan
- 위 애노테이션(@ComponentScan)이 붙은 클래스가 위치한 패키지를 포함하여 하위 패키지들 내 @Component 애노테이션을 가진 클래스들을 스캔해서 Bean으로 등록한다.
- @Configuration, @Repository, @Service, @Controller, @RestController 애노테이션을 가진 클래스들도 스캔해서 Bean으로 등록한다.
2단계 @EnableAutoConfiguration
- spring.factories 설정값을 읽는다.
- org.springframework.boot.autoconfigure.EnableAutoConfiguration
해당 키값 아래 등록된 설정 파일(@Configuration)들 빈으로 등록
- @ConditionalOnXxxYyyZzz 애노테이션에 정의된 조건에 따라 빈으로 등록