모든 auto configuration 대상을 항상 Bean으로 등록해두는 것은 리소스 낭비 => AutoConfigurationImportSelector 가 실제로 Bean으로 등록할 클래스를 선별 => 클래스들이 구현한 Condition 인터페이스를 확인하여 조건에 맞는 클래스만을 선별
Condition 어노테이션
Conditional : 해당 클래스가 구현한 모든 Condition 인터페이스를 만족해야 등록
CondtionalOnClass : 해당 클래스가 classpath에 존재할경우 등록
ConditionalOnBean : 해당 Bean이 BeanFactory에 포함되어있을 경우 등록
ConditionalOnMissingBean : 해당 Bean이 BeanFactory에 포함되어있지 않을 경우 등록
ConditionalOnCloudPlatform : 해당 클라우드 플랫폼이 사용중일 경우 등록
ConditionalOnExpress : SpEL 조건문이 참일 경우 등록
@SpringBootConfiguration
Spring의 Configuration 어노테이션을 대체하는 어노테이션
애플리케션에 단 하나만 존재할 수 있으며 스프링부트에서 지원하는 테스트 어노테이션인 @SpringBootTest는 이 어노테이션이 붙은 클래스를 메인으로 하위 설정을 가져온다.
@ComponentScan
@Component 어노테이션이 붙은 클래스를 자동으로 스캔하여 Bean으로 등록
사용자 Bean를 등록할 수 있게 해주는 어노테이션
내장 웹 서버(Embedded Server) / 서블릿 자동설정
Spring Boot로 프로젝트를 생성할 경우 Tomcat과 Dispatcher Servlet을 자동으로 설정하여 사용자가 별도로 웹 서버를 설치하고 Dispatcher Servlet을 설정해줄 필요가 없음
또한 배포시에도 내장 서버를 탑재한 jar파일만을 배포하면 jar 파일을 실행하는 것만으로 서버를 구동할 수 있게됨
의존성 관리
starter 를 통해 의존성을 관리
기존 Spring에서 버전에 따른 호환성을 고려하여 의존성을 수동으로 관리해야했던 문제 해결