Springboot App은 @SpringBootApplication 라는 어노테이션에 의해 실행이 가능해진다.
@SpringBootApplication 는 아래 3개의 어노테이션을 같이 쓴 것과 동일하다.
springboot는 두 단계로 Bean 등록을 한다.
Component 관련 어노테이션이 붙어 있는 클래스를 Bean을 등록한다.
springboot는 spring-boot-autoconfigure 라는 라이브러리의
META-INF 디렉토리 내에 spring.factories라는 config 파일이 있다.
springboot는 이 spring.factories라는 config 파일의 config 키-값 정보들을
읽어 들여서 Bean으로 등록한다.
조건에 따라서 Bean으로 등록할 수 있고 등록되지 않게 할 수도 있다.
ex) @ConditionalOnClass 라는 어노테이션을 활용하여 특정 class의 존재 유무
조건에 따라 Bean 등록을 할 것인지 결정한다.
이처럼 @EnableAutoConfiguration이라는 어노테이션은 스프링부트에서 미리 정의해 둔 bean config들을 사용하게 되어서 우리는 아무설정없이springBoot를 이용하는 것 처럼 보이게 되는 것이다.