4. 내장된 서블릿 컨테이너
서블릿 기반의 웹 애플리케이션에서는 서버를 실행하기 위해 먼저 Apache Tomcat과 같은 서블릿 컨테이너를 직접 설정해주어야 했음
스프링 부트에서는 이러한 서블릿 컨테이너를 소스 코드의 형태로 내장(Built-in) 하고 있기 때문에 별도로 서블릿 컨테이너를 설정하지 않고도 서버 프로세스를 실행할 수 있음
Note
내장 톰캣(Built-in Tomcat)
스프링 부트 프로젝트에 소스 코드의 형태로 내장된 서블릿 컨테이너 모듈
따라서 아래와 같이 main()를 실행하면 스프링 부트는 내장된 기본 서블릿 컨테이너인 Tomcat을 실행하고 그 위에서 웹 애플리케이션을 실행함
package dev.spring.petclinic;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class PetclinicApplication {
public static void main(String[] args) {
SpringApplication.run(PetclinicApplication.class, args);
}
}Tomcat과 관련된 애플리케이션 서버 실행 로그
...
INFO 9500 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
INFO 9500 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]
INFO 9500 --- [ restartedMain] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.75]
INFO 9500 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
INFO 9500 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3281 ms
...
INFO 9500 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
INFO 9500 --- [ restartedMain] d.spring.petclinic.PetclinicApplication : Started PetclinicApplication in 8.973 seconds (JVM running for 9.805)💡
Tip
이러한 내장 Tomcat은 spring-boot-starter-tomcat 모듈에 구성되어 있으며,
이 tomcat 모듈은 spring-boot-starter-web 모듈 내부에 하위 의존 관계로 포함되어 있음
각 모듈 간 의존 관계는 아래의 명령어를 통해 확인 가능
terminal
mvnw dependency:treeLast updated on