기존 스프링 부트의 자동구성 과정
참고) 실제 사용은 몇가지 안된다하더라도 애플리케이션이 시작할 때마다 모든 빈을 다 생성하는 동작방식은 아님
각각의 Configuration 클래스 혹은 그 안에 정의된 @Bean이 붙은 Factory Method를 어떤 조건을 걸어서 적용할지 말지는 결정하는 프로세스를 거치게 되어있어서 사용하지 않는 기술은 포함시키지 않게 하면 됨
⇒ 이 과정을 알게되면 Configuration 앞에 Auto가 붙은 이유를 알게 될 것
조건) Tomcat 서버를 사용할지, Tomcat 서버 대신에 다른 종류의 서블릿 컨테이너( 예, Jetty 서버, Undertow 서버 )를 사용할지 선택할 수 있도록 변경
tomcat-embed-core는 spring initializer가 처음 프로젝트 초기 setup 해주면서 포함되도록 만들어줌
프로젝트 구성 정보와 빌드에 사용하는 빌드 스크립트를 gradle 기술을 이용하여 포함시킴
dependencies : 프로젝트가 동작할 때 필요로 하는 라이브러리들 기술
기본적으로 애플리케이션 빌드 및 동작 시키는데 필요한 라이브러리가 1개 등록되어있음
implementation 'org.springframework.boot:spring-boot-starter-web'
spring-boot-starter로 시작하는 모듈은 많은 라이브러리를 내장하고 있음(터미널 명령어)
// gradle이 설치되어있는 경우
./gradle dependencies --configuration compileClasspath
/*
* gradle이 설치되지 않은 경우
* gradlew가 있는 경로에서 명령어 수행
*/
./gradlew dependencies --configuration compileClasspath
tomcat을 사용할 수 있게 된건 TomcatWebServerConfig 클래스 안에서 tomcat을 실행시키는 간단한 팩토리 빈을 리턴 시키기 때문임
Jetty는 spring-boot-starter-web의 라이브러리로 등록되어 있지 않음