[Spring] Spring Boot 내장 톰캣 실행 과정

yedi·2025년 1월 26일

기존 Tomcat은 설치와 WAR 배포가 필요하지만, 스프링 부트는 내장 톰캣을 포함하여 JAR 파일 실행만으로 동작하며 설정이 간단합니다.
스프링 부트가 톰캣 서버를 내장하여 실행하는 과정을 자세히 알아보겠습니다.


Spring Boot 내장 톰캣 실행 과정

1. Spring Boot Starter Dependency

Maven의 pom.xml 파일에서 spring-boot-starter-web 의존성을 추가하면, Spring Boot는 내장 톰캣 서버를 자동으로 포함합니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

이 의존성은 기본적으로 Apache Tomcat을 내장 서버로 포함하며, 이를 통해 웹 애플리케이션을 실행할 수 있습니다.


2. Spring Boot의 Main Class

스프링 부트 애플리케이션은 @SpringBootApplication 애노테이션이 있는 메인 클래스를 통해 시작됩니다.
이 애노테이션은 @Configuration, @EnableAutoConfiguration, @ComponentScan을 포함하여 필요한 설정을 자동으로 구성합니다.

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}


3. SpringApplication.run() 동작

SpringApplication.run() 메서드는 애플리케이션 실행의 진입점으로 다음 작업을 수행합니다.

① Spring Context 초기화
: 스프링 애플리케이션 컨텍스트(ApplicationContext)를 생성하고, 필요한 빈(bean)을 초기화합니다.

② 내장 톰캣 서버 초기화
: spring-boot-starter-web 의존성에 포함된 톰캣 서버가 TomcatServletWebServerFactory를 통해 생성됩니다. 이 과정에서 톰캣 서버가 초기화되고, 포트(기본값: 8080)가 설정됩니다.

③ Servlet Context와 Spring Context 연결
: 스프링의 디스패처 서블릿(DispatcherServlet)이 톰캣의 서블릿 컨텍스트에 등록됩니다. 이를 통해 HTTP 요청이 스프링 MVC로 전달됩니다.

④ 톰캣 서버 시작
: 톰캣 서버가 시작되고, 애플리케이션은 지정된 포트에서 HTTP 요청을 받을 준비를 합니다.


4. 톰캣 서버 구성 파일

내장 톰캣은 외부 설정 파일 없이 실행되며, 기본 설정은 application.properties 또는 application.yml에서 정의할 수 있습니다.

server.port=8081
server.servlet.context-path=/myapp


5. JAR 파일 실행

스프링 부트 애플리케이션은 기본적으로 JAR 파일로 패키징됩니다.
Maven을 사용하여 패키징하려면 spring-boot-maven-plugin을 추가합니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

mvn package로 JAR 파일을 생성한 뒤, java -jar로 실행하면 JAR에 포함된 내장 톰캣이 동작합니다.

정상적으로 스프링 부트 애플리케이션이 동작하는 것을 확인할 수 있습니다.



참고

기존 Tomcat 설치 방식 vs Spring Boot 내장 톰캣

항목 기존 Tomcat 설치 Spring Boot 내장 톰캣
톰캣 설치 별도로 설치 및 설정 필요 내장 톰캣 자동 포함 (spring-boot-starter-web)
배포 방식 WAR 파일을 빌드 후 톰캣 서버에 배포 JAR 파일로 빌드 후 자체 실행 (java -jar)
설정 관리 server.xml, web.xml 등 외부 설정 파일 사용 application.properties 또는 application.yml
운영 환경 요구 서버에 톰캣 설치 및 환경 구성 필요 별도 설치 없이 JAR 파일 실행으로 동작
유연성 특정 톰캣 버전에 종속 톰캣 버전 관리 및 교체가 간단
장점 기존 톰캣 환경과 통합 용이 독립 실행 가능, 빠른 설정 및 배포
단점 설정 복잡, 톰캣 설치 및 관리 부담 내장 톰캣 크기 증가로 JAR 파일이 무거울 수 있음

0개의 댓글