Вопрос проверяет понимание среды выполнения Spring Boot приложений и знание встроенных серверов, что важно для развертывания и конфигурации.
Spring Boot использует концепцию встроенного сервера (embedded server), чтобы упростить развертывание и запуск приложений. Вместо необходимости устанавливать и настраивать внешний сервер приложений, такой как традиционный Tomcat, вы получаете сервер, который запускается внутри самого Java-процесса вашего приложения.
По умолчанию, когда вы добавляете зависимость spring-boot-starter-web в проект Maven или Gradle, Spring Boot автоматически включает и настраивает Apache Tomcat в качестве встроенного контейнера сервлетов. Это означает, что при запуске приложения (например, через метод main в классе с аннотацией @SpringBootApplication) стартует экземпляр Tomcat, который развертывает ваше приложение на указанном порту (по умолчанию 8080).
Spring Boot поддерживает замену Tomcat на другие популярные серверы. Для этого нужно исключить стартер Tomcat из зависимостей и добавить стартер для другого сервера. Например:
Пример конфигурации в Maven для перехода на Jetty:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>Хотя встроенный сервер — это стандарт, Spring Boot также позволяет упаковать приложение в традиционный WAR-файл для развертывания на внешнем сервере приложений (например, на отдельном экземпляре Tomcat, WildFly или WebSphere). Для этого нужно изменить тип упаковки в конфигурации и сделать класс приложения наследником SpringBootServletInitializer.
Выбор между встроенным и внешним сервером зависит от требований к инфраструктуре, оркестрации (например, Docker, Kubernetes) и политикам развертывания в компании.
Итог: Spring Boot приложение обычно запускается на встроенном сервере Tomcat, что идеально подходит для микросервисов, облачных развертываний и быстрого старта разработки, так как не требует внешней настройки сервера.