Ответ
spring-boot-starter-web включает встроенный Tomcat по умолчанию как транзитивную зависимость.
Зависимость Maven:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Как это работает:
- Стартер
spring-boot-starter-webзависит отspring-boot-starter-tomcat. - При запуске приложения Spring Boot автоматически настраивает и запускает встроенный экземпляр Tomcat на порту по умолчанию (8080).
Замена Tomcat на другой контейнер (например, Jetty или Undertow):
- Исключите Tomcat из стартера
web. - Добавьте стартер для нужного контейнера.
Пример перехода на Jetty:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!-- Исключаем Tomcat -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Добавляем Jetty -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
Отдельный стартер Tomcat: spring-boot-starter-tomcat можно использовать независимо, если вы создаете приложение, которое не является веб-приложением, но требует контейнер сервлетов (например, для обработки WebSocket).