
메인 클래스에 붙어있는 @SpringBootApplication은 @EnableAutoConfiguration, @ComponentScan, @SpringBootCoinfiguration 어노테이션을 포함한다.
@EnableAutoConfiguration
- 애플리케이션 클래스패스에 있는 JAR 파일을 바탕으로 애플리케이션을 자동으로 구성해주는 스프링 부트 자동 구성 기능을 활성화한다.
@ComponentScan
- 애플리케이션에 있는 스프링 컴포넌트를 탐색해서 찾아낸다
스프링 컴포넌트는 @Component, @Bean 등이 붙어 있는 자바 빈으로서 스프링으로 관리한다.
Annotation 에서 지정한 디렉토리와 그 하위 디렉터리를 모두 탐색해서 스프링 컴포넌트를 찾아내고, 라이프사이클을 관리한다.@ComponentScan 은 루트 패키지에서 시작해서 모든 하위 패키지까지 탐색한다는 것!
@SpringBootConfiguration
- 스프링 부트 애플리케이션 설정을 담당하는 클래스에 이 어노테이션을 붙인다.
내부적으로 @Configuration을 포함하고 있기 때문에 이 설정 클래스는 스프링 부트 컴포넌트 탐색으로 발견되며,
이 클래스 안에서 정의된 빈도 스프링으로 발견해 로딩된다.
결과적으로 이러한 빈을 통해 애플리케이션 설정 과정에 참여한다.